Codecademy Forums

FAQ: Functions - Putting It All Together

This community-built FAQ covers the “Placholder” exercise from the lesson “Functions”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn How to Code

FAQs on the exercise Putting It All Together

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Hello, I’m so confused! This is what I have done, but I keep getting an error (“expected variable ‘result’ to be defined”)

// Define the ‘makeSandwich()’ function
function makeSandwich(topping1, topping2) {
sandwich = ‘bread’
sandwich =+ sandwich + ‘topping1’
sandwich =+ sandwich + ‘topping2’
sandwich =+ ‘bread’

result = makeSandwich(‘burger patty’, ‘pickles’)
}

Help please! I really wanna master this so I can move on confidently. Thanks!

2 Likes

All compound assignments are written with the operation first, then assignment.

a += 1

which is the equivalent of,

a = a + 1

The addition takes place first, then the assignment.

Note that when using the augmentation operator we do not repeat the variable on the right hand side.

sandwich = bread
sandwich += topping1

Note also that topping1 and topping2 are variables so we would never write them in quotes.

2 Likes

What is the meaning of + ‘,’

11 Likes

Hello,
What if I have 7 “layers” and want to have them flexible and changeable? I was trying this (below) but it returns a sandwich with bread only (“One or more ingredients are not valid”). Can you see the mistake?

topping1 = ‘jelly’
topping2 = ‘pickles’
function makeSandwich(topping1, topping2, topping1, topping2, topping1, topping2, topping1) {
sandwich = ‘bread’ + ‘,’
sandwich += topping1 + ‘,’
sandwich += topping2 + ‘,’
sandwich += topping1 + ‘,’
sandwich += topping2 + ‘,’
sandwich += topping1 + ‘,’
sandwich += topping2 + ‘,’
sandwich += topping1 + ‘,’
sandwich += ‘bread’
return sandwich
}

result = makeSandwich(‘jelly’, ‘pickles’)

Please post a link to the exercise. (Copy the URL in the location bar and paste into a reply.)

Sorry, here it is: https://www.codecademy.com/paths/code-foundations/tracks/learn-how-to-code/modules/bop-ii/lessons/bop-functions/exercises/all-together

1 Like

The parameter variables should all be unique. Work with the two parameters given, topping1 and topping2.

Would someone be able to tell me what’s the reasoning behind writing the function in multiple steps as…

function makeSandwich(topping1, topping2) {
sandwich = ‘bread’ + ‘,’
sandwich += topping1 + ‘,’
sandwich += topping2 + ‘,’
sandwich += ‘bread’
return sandwich
}

…and not as a single row?

function makeSandwich(topping1, topping2) {
sandwich = ‘bread’ + ‘,’ + topping1 + ‘,’ + topping2 + ‘,’ + ‘bread’
return sandwich
}

Is it just to make it easier to read?

Quite possibly, yes. At this point is difficult to say how comfortable the new learner is with concepts such as concatenation.

ES6 gives us a really special tool for constructing a string from literals and variables… The template literal syntax.

function makeSandwich(topping1, topping2) {
    return `bread, ${topping1}, ${topping2}, bread`
}

This will be covered in the lessons on strings and string concatenation so let this slide for the time.

2 Likes

Hi, can someone help me brake down the instructions in { }, I don’t understand the logic behind it :confused:

function makeSandwich(topping1, topping2) {
sandwich = ‘bread’ + ‘,’
sandwich += topping1 + ‘,’
sandwich += topping2 + ‘,’
sandwich += ‘bread’
return sandwich
}

Technically, there is no logic, only inline assignments. The first line in the function block defines a string object, sandwich and assigns the first word concatenated with a comma string character. The next three lines continue the assignment using an assignment operator that extends the string in one step. += is sometimes referred to as an augmentation operator.

The finished result will be string composed of the assignments in all four lines.

console.log(sandwich)
// bread,ham,cheese,bread

Thank you! Made it clear :slight_smile:

1 Like

Hi there! Can you please explain the role of + ‘,’ after every step in making sandwich?

That is the concatenation operator for joining strings and variables to form a single string. This is the old form of string interpolation.

what is the meaning of +’,’ . Also the repetition of “topping1 and topping2” can not be repeated thus the function can not call duplicated layers; why?

This is meant to be an extremely simple example of the usefulness of functions in coding. Without the
+ ',' the return value of sandwich would be breadhamcheesebread instead of bread,ham,cheese,bread. It would be even more readable if we added a space in addition to the comma by changing it to + ', '.
The return value of sandwich would then be bread, ham, cheese, bread.

This function can be customized in any way the programmer wishes. If we wanted to repeat the layers to make a double-decker sandwich (i.e. “bread,ham,cheese,ham,cheese,bread”) we could re-write it like this:

function makeSandwich(topping1, topping2) {
  sandwich = 'bread' + ','
  sandwich += topping1 + ','
  sandwich += topping2 + ','
  sandwich += topping1 + ','
  sandwich += topping2 + ','
  sandwich += 'bread'
  return sandwich
}

The “Learn How to Code” course is a beginning course. There are many ways this example function could be refactored to be more concise and more useful. As you progress through learning to code you’ll see what I mean. Happy coding!

1 Like

Can someone please tell me what this {…return sandwich} in function mean?

return sends whatever follows back to the line of code that invoked the function which programmers refer to as the ‘caller’. In this case the value stored in the variable sandwich is returned. This is a very rudimentary example of a function to show the basic structure in a generic programming language.
Consider this:

function makeSandwich(topping1, topping2) {
  return 'bread, ' + topping1 + ', ' + topping2 + ', ' + 'bread';
}

console.log(makeSandwich('ham', 'cheese')); //This line of code is the caller when executed
console.log(makeSandwich('peanut butter', 'jelly')); //Same for this line
console.log(makeSandwich('turkey', 'provolone')); //Also this line

Output:

bread, ham, cheese, bread
bread, peanut butter, jelly, bread
bread, turkey, provolone, bread

The code above is JavaScript, and you can see that by using a function we can repeat actions as often as we like by invoking the function. The console.log() method is JavaScript’s way of printing output to the console, so we can see it. Don’t get too hung up on understanding everything just yet. This will all make a lot more sense as you progress on your learning to code journey. Happy Coding!

Thank you for your reply

1 Like