Gabriel Heinzer
December 28, 2021
Operator Precedence and Associativity
1min read

In algebra, you all know that multiplication and division have a higher precedence than addition and subtraction.


With the expression 1 + 2 * 3, you must first multiply 2 * 3 and then add 1 to the result.


Well, in Javascript, this concept is also valid, it is simply called Operator Precedence.

Example

Precedence range from 1 to 19 :

  • Multiplication has a precedence of 13.
  • Addition has a precedence of 12.
  • Grouping (putting the expression between parenthesis) has the highest precedence. (19)
console.log(1 + 2 * 3);
// The multiplication is done first, the expression turns into
console.log(1 + 6);
// The addition is then evaluated, the result is 7

console.log((1 + 2) * 3);
// The grouped expression is read first, the expression turns into
console.log(3 * 3);
// The multiplication is then evaluated, the result is 9

The order of evaluation is also influenced by the operator associativity.


Associativity is the direction in which the expression is evaluated : right to left or left to right.

Example

Assignment operators are right-associative, which means they are read from right to left :

a = b = 5
// is the same as
a = (b = 5)

Exception

❗ Grouped expressions are not always read first. If you use conditional evaluations, the condition will be checked first, then the expression between parenthesis will be evaluated.

a || (b * c);
// 'a' is evaluated first, then (b * c) is evaluated if 'a' is false
a && (b < c);
// 'a' is evaluated first, if 'a' is true (b * c) is evaluated

About

About the author

Ludivine Achouri

Passionate web developer from France


Comments


Copyright © Achouri Ludivine 2022 | All rights reserved