javascript-precedencia-operadores

Precedencia de operadores en JavaScript

La precedencia de operadores define el orden en que los operadores se evalúan cuando hay múltiples operadores en una expresión.

Como es lógico, los operadores con mayor precedencia se evalúan antes que los operadores con menor precedencia.

Por ejemplo, en la expresión 3 + 4 * 5, la multiplicación se realiza antes que la suma debido a que el operador de multiplicación tiene una precedencia mayor que el operador de suma.

Tabla de precedencia de operadores

Aquí tenéis una tabla con los operadores más comunes en JavaScript, ordenados por su precedencia, desde la más alta hasta la más baja:

PrecedenciaOperadorDescripción
1()Agrupación
2. [] ()Acceso a propiedades y llamadas a métodos
3++ -- + - ! ~Unarios (pre-incremento, pre-decremento, etc.)
4**Exponenciación
5* / %Multiplicación, división y módulo
6+ -Adición y sustracción
7<< >> >>>Desplazamiento a la izquierda/derecha
8< <= > >=Comparación
9== != === !==Igualdad y desigualdad
10&AND bit a bit
11^XOR bit a bit
12|OR bit a bit
13&&AND lógico
14||OR lógico
15? :Operador ternario
16= += -= *= /= %= <<= >>= >>>= &= ^= |=Asignación
17,Operador coma

Es decir, los que estén más arriba en esa tabla, se evalúan antes que los que tiene por debajo.

Asociatividad

La asociatividad define el orden en que se evalúan los operadores con la misma precedencia. Puede ser de izquierda a derecha o de derecha a izquierda.

Por ejemplo, en la expresión 5 - 3 + 2, la operación se realiza de izquierda a derecha porque la resta y la suma tienen la misma precedencia.

La mayoría de los operadores en JavaScript tienen asociatividad izquierda a derecha. Es decir, si se encuentran múltiples operadores del mismo tipo, se evalúan de izquierda a derecha.

const resultado = 5 - 3 + 2;

// se evalua como
const resultado = (5 - 3) + 2; // 4

Pero algunos operadores tienen asociatividad derecha a izquierda (lo que significa que se evalúan de derecha a izquierda). Los dos patitos raros son:

  • El operador el operador de asignación (=)
  • El operador de exponentes (**).
let a, b, c;
a = b = c = 10;

//Se evalua como 
a = (b = (c = 10))

console.log(a); // y todos son 10 y felices

Ejemplos de precedencia