--- title: Precedencia de operadores slug: Web/JavaScript/Reference/Operators/Operator_Precedence tags: - JavaScript - Operator - operator details - operator precedence translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence original_slug: Web/JavaScript/Referencia/Operadores/Operator_Precedence ---
La precedencia de operadores determina el orden en el cual los operadores son evaluados. Los operadores con mayor precedencia son evaluados primero.
Ejemplo:
3 + 4 * 5 // retorna 23
El operador de multiplicación ("*") tiene una precedencia mas alta que el operador de suma ("+") y por eso sera evaluado primero.
La asociatividad determina el orden en el cual los operadores con el mismo nivel de precedencia son procesados. Por ejemplo:
a OP b OP c
La asociatividad de izquierda a derecha significa que esa expresión es procesada como (a OP b) OP c, mientras que la asociatividad de derecha a izquierda significa que es procesada como a OP (b OP c). Los operadores de asignación tienen asociatividad de derecha a izquierda, por lo que puedes escribir:
a = b = 5;
para asignar 5 a las dos variables. Esto es porque el operador de asignación retorna el valor que asignó. Primero b es inicializada a 5. Despues a es inicializada al valor de b.
La siguiente tabla esta ordenada de la precedencia más alta (0) a la más baja (18).
| Precedencia | Tipo de operador | Asociatividad | Operador |
|---|---|---|---|
| 0 | grouping | n/a | (…) |
| 1 | member | left-to-right | ….… |
…[…] |
|||
| new | n/a | new … (…) |
|
| 2 | function call | left-to-right | …(…) |
| new | right-to-left | new … |
|
| 3 | increment | n/a | …++ |
| decrement | n/a | …-- |
|
| 4 | logical-not | right-to-left | !… |
| bitwise not | right-to-left | ~… |
|
| unary + | right-to-left | +… |
|
| unary negation | right-to-left | -… |
|
| typeof | right-to-left | typeof … |
|
| void | right-to-left | void … |
|
| delete | right-to-left | delete … |
|
| 5 | multiplication | left-to-right | * |
| division | left-to-right | / |
|
| modulus | left-to-right | % |
|
| 6 | addition | left-to-right | + |
| subtraction | left-to-right | - |
|
| 7 | bitwise shift | left-to-right | << |
>> |
|||
>>> |
|||
| 8 | relational | left-to-right | < |
<= |
|||
> |
|||
>= |
|||
| in | left-to-right | in |
|
| instanceof | left-to-right | instanceof |
|
| 9 | equality | left-to-right | == |
!= |
|||
=== |
|||
!== |
|||
| 10 | bitwise-and | left-to-right | & |
| 11 | bitwise-xor | left-to-right | ^ |
| 12 | bitwise-or | left-to-right | | |
| 13 | logical-and | left-to-right | && |
| 14 | logical-or | left-to-right | || |
| 15 | conditional | right-to-left | … ? … : … |
| 16 | assignment | right-to-left | = |
+= |
|||
-= |
|||
*= |
|||
/= |
|||
%= |
|||
<<= |
|||
>>= |
|||
>>>= |
|||
&= |
|||
^= |
|||
|= |
|||
| 17 | yield | right-to-left | yield… |
| 18 | comma | left-to-right | , |