Operator precedence determines the sequence in which operations are executed in an arithmetic expression.
Multiplication (*) and division (/) take precedence over addition (+) and subtraction (–).
As in standard mathematics, multiplication is performed before addition.
let x = 100 + 50 * 3; |
When parentheses are used, the operations within them are evaluated first.
let x = (100 + 50) * 3; |
Operations with the same precedence (such as * and /) are evaluated from left to right.
let x = 100 / 50 * 3; |
Operator Precedence Values Expressions in parentheses are computed before the rest of the expression |
|||
Val |
Operator |
Description |
Example |
18 |
( ) |
Expression Grouping |
(100 + 50) * 3 |
17 |
. |
Member Of |
person.name |
17 |
[] |
Member Of |
person[“name”] |
17 |
?. |
Optional Chaining ES2020 |
x ?. y |
17 |
() |
Function Call |
myFunction() |
17 |
new |
New with Arguments |
new Date(“June 5,2022”) |
16 |
new |
New without Arguments |
new Date() |
Increment Operators |
|||
15 |
++ |
Postfix Increment |
i++ |
15 |
— |
Postfix Decrement |
i– |
14 |
++ |
Prefix Increment |
++i |
14 |
— |
Prefix Decrement |
–i |
NOT Operators |
|||
14 |
! |
Logical NOT |
!(x==y) |
14 |
~ |
Bitwise NOT |
~x |
Unary Operators |
|||
14 |
+ |
Unary Plus |
+x |
14 |
– |
Unary Minus |
-x |
14 |
typeof |
Data Type |
typeof x |
14 |
void |
Evaluate Void |
void(0) |
14 |
delete |
Property Delete |
delete myCar.color |
Arithmetic Operators |
|||
13 |
** |
Exponentiation ES2016 |
10 ** 2 |
12 |
* |
Multiplication |
10 * 5 |
12 |
/ |
Division |
10 / 5 |
12 |
% |
Division Remainder |
10 % 5 |
11 |
+ |
Addition |
10 + 5 |
11 |
– |
Subtraction |
10 – 5 |
11 |
+ |
Concatenation |
“John” + “Doe” |
Shift Operators |
|||
10 |
<< |
Shift Left |
x << 2 |
10 |
>> |
Shift Right (signed) |
x >> 2 |
10 |
>>> |
Shift Right (unsigned) |
x >>> 2 |
Relational Operators |
|||
9 |
In |
Property in Object |
“PI” in Math |
9 |
Instanceof |
Instance of Object |
x instanceof Array |
Comparison Operators |
|||
9 |
< |
Less than |
x < y |
9 |
<= |
Less than or equal |
x <= y |
9 |
> |
Greater than |
x > y |
9 |
>= |
Greater than or equal |
x >= Array |
8 |
== |
Equal |
x == y |
8 |
=== |
Strict equal |
x === y |
8 |
!= |
Unequal |
x != y |
8 |
!== |
Strict unequal |
x !== y |
Bitwise Operators |
|||
7 |
& |
Bitwise AND |
x & y |
6 |
^ |
Bitwise XOR |
x ^ y |
5 |
| |
Bitwise OR |
x | y |
Logical Operators |
|||
4 |
&& |
Logical AND |
x && y |
3 |
|| |
Logical OR |
x || y |
3 |
?? |
Nullish Coalescing ES2020 |
x ?? y |
Conditional (ternary) Operator |
|||
2 |
? : |
Condition |
? “yes” : “no” |
Assignment Operators |
|||
2 |
= |
Simple Assignment |
x = y |
2 |
: |
Colon Assignment |
x: 5 |
2 |
+= |
Addition Assignment |
x += y |
2 |
-= |
Subtraction Assignment |
x -= y |
2 |
*= |
Multiplication Assignment |
x *= y |
2 |
**= |
Exponentiation Assignment |
x **= y |
2 |
/= |
Division Assignment |
x /= y |
2 |
%= |
Remainder Assignment |
x %= y |
2 |
<<= |
Left Shift Assignment |
x <<= y |
2 |
>>= |
Right Shift Assignment |
x >>= y |
2 |
>>>= |
Unsigned Right Shift |
x >>>= y |
2 |
&= |
Bitwise AND Assignment |
x &= y |
2 |
|= |
Bitwise OR Assignment |
x |= y |
2 |
^= |
Bitwise XOR Assignment |
x ^= y |
2 |
&&= |
Logical AND Assignment |
x &&= y |
2 |
||= |
Logical OR Assignment |
x ||= y |
2 |
=> |
Arrow |
x => y |
2 |
yield |
Pause / Resume |
yield x |
2 |
yield* |
Delegate |
yield* x |
2 |
… |
Spread |
… x |
1 |
, |
Comma |
x , y |