JavaScript Operator Precedence
Operator precedence describes the order in which operations are performed in
an arithmetic expression.
Multiplication (*) and division (/) have higher precedence than
addition (+) and subtraction (-).
As in traditional mathematics, multiplication is done first:
let x = 100 + 50 * 3;
Try it Yourself »
When using parentheses, operations inside the parentheses are computed first:
let x = (100 + 50) * 3;
Try it Yourself »
Operations with the same precedence (like * and /) are computed from left to right:
let x = 100 / 50 * 3;
Try it Yourself »
Operator Precedence Values
Expressions in parentheses are computed before the rest of the expression
Function are executed before the result is used in 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
Postfix increments are executed before prefix increments
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
Exponentiations are executed before multiplications
Multiplications and divisions are executed before additions and subtractions
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
Assignments are executed after other operations
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
★
+1
Reference: https://www.w3schools.com/js/js_precedence.asp