var x = 5;
x *= 2;
console.log(++x);
How is the answer 11? I'm confused
var x = 5;
x *= 2;
console.log(++x);
How is the answer 11? I'm confused
var x = 5; // x = 5
x *= 2; // multiply x with 2 (x = 10)
console.log(++x); // console.log x plus 1 (11)
A more common way of using this syntax is with plus or minus:
x += 1;
// is a shorthand for
x = x + 1;
x *= 2;
// is a shorthand for
x = x * 2;
// etc.
++x
increments FIRST, and THEN is used, vs:
x++
which is used FIRST, THEN is incremented.
if x
is 10
,
console.log(++x)
will result in "11", vs:
console.log(x++)
will result in "10".
In both cases, after code line, x
will be 11
.
var x = 5;
x *= 2;
console.log(x);
console.log(++x);
x *= 2;
says: x
will be reinitialised (reassigned) to what it was before (5
) multiplied by 2
(which gives us 10
). (Useful link - look at chapter Modify-in-place)
++x
says: x
will be reinitialised (reassigned) to what it was before (10
) plus 1
. Also, return x
s new value (11
). (In same link, look at the below chapter Increment/Decrement)
If, instead, we had x++
it'll say: 'add 1 to x but don't return this new value - return the value before we made this addition (10
):
var x = 5;
x *= 2;
console.log(x++);