FAQ: Variables - The Increment and Decrement Operator

This community-built FAQ covers the “The Increment and Decrement Operator” exercise from the lesson "Variables ".

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

Web Development

Introduction To JavaScript

FAQs on the exercise The Increment and Decrement Operator

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!

Why would you write out new code to put the number up 1 or down 1.
Rather than simply change the number of the original variable?

1 Like

what if you don’t know the value because its user input? Or you have a counter on your website, then increasing the counter by one is easier when you have a visitor

or when you use a for loop?

6 Likes

The use of +=, ++ and other daft contractions was introduced in ‘C’ by Kernighan and Ritchie because the original ‘C’ compilers were hosted on PDP8 minicomputers. The available memory was minimal
and the quality of the code development tools even more minimal. Variable names at one point were limited to five characters! It made some sort of sense then to use as few characters as possible. But it also made the code almost unreadable which from a code maintenance point of view is not a good thing. If you really want to see code contraction gone mad read PJ Plaugers’ ‘C’ library text. I have
been writing ‘C’ and various assembly codes for real-time embedded development since 1988. Just as
soon as it became reasonable to do so I threw out the contractions in favour of a more flowing style
of code writing. I just started looking at JavaScript as an additional tool in the GUI/test arsenal and
am really surprised the archaic way of writing formulae has made it into the specification of a
supposedly modern(-ish) web-based language.

5 Likes

You should either add

console.log(gainedDollar);
console.log(lostDollar);

to the existing code so we can see the changes, or promt us to write it ourselves in a third point in the execise.
Otherwise people who dont think of it will not see the output

5 Likes

why does console.log(variable++) not make changes to the variable the same way variable++ does?

1 Like

it does:

i = 0;
console.log(i++)
console.log(i)

see? i has increased. I would recommend reading:

https://stackoverflow.com/questions/6867876/javascript-i-vs-i

1 Like

Good catch @beta5196194865
variable++ increments the original value by one and then evaluates to the value before it was incremented.

const messages = ['zero','one','two'];
let i = 0;
console.log(messages[i++]);   // zero
console.log(i);               // 1
1 Like

Hello there, I have a question about the camelCase use for variables. Is it possible to use _ between the variables instead? what are the cons and pro’s of useing that? thanks in advance!

Each language often has there recommend way of naming variable, for JavaScript this is cammelCase, while python uses snake_case

yeah exactly, that is why I am asking :slight_smile:
I have used python before that is why, thanks a lot!

I would stick with whatever the language recommends. Although there are some exceptions, for example even when I work in a camel case language (like JavaScript) I would use snake case for my test names/methods. These method names are often very descriptive and almost sentences, then snake case has my preference.

well yeah, from one side, to me it looks like it is more readable for that purpose you know, that is why I was asking about the snake case.
so, you use one 2-3 words camel but if it is a long one, you just use snake case, correct? If so, will do and have that in mind too! thanks for giving the idea to combine them!

most variable and methods names shouldn’t be be longer then 2 or 3 words. Methods of test case are the only exception I have encountered so far. But this is also you learn with experience

Hello World

can someone pleas tell me why this code wont log to the console. I get syntax error console.log not defined.

let gainedDollar = 3;
let lostDollar = 50;
gainedDollar++;
consoel.log(gainedDollar);
lostDollar–;
consoel.log(glostDollar);

Welcome to the forums!

Double-check your spelling of console (you’ve written it as consoel). Additionally, double-check your spelling of lostDollar in your second console.log().

Why doesnt this work?

let gainedDollar = 3;
let lostDollar = 50;

gainedDollar = gainedDollar++
lostDollar = lostDollar-- (I’m typing two minuses but only one is being displayed here)

console.log(gainedDollar)
console.log(lostDollar)

I’ve reassigned the value of gainedDollar to add 1 and reassigned the value of lostDollar to reduce 1 but when I console.log the variables, they havent changed??? They still show 3 and 50

++ and -- are short-hands to increase or decrease by one, so if we unpack the short-hand we get;

gainedDollar = gainedDollar = gainedDollar + 1

Can we use ** and // for multiply and division purpose? Or would it not work because it only uses the value or 1?

these operators work differently, ** is exponential, so 3 ** 3 will result in 27 while 3 * 3 is 9.

// is floor division if I am not mistaken, so you get different division/rounding behavior.

1 Like