Operadores
Suma y concatenación '+'
Este operador puede usarse para sumar números o concatenar cadenas. Pero, ¿Qué ocurre si intentamos sumar un número con un string, o algo que no sea un número o string?. Vamos a ver qué pasa:
Cuando un operando es string, siempre se realizará una concatenación, por tanto se intentará transformar el otro valor en un string (si no lo es). En caso contrario, intentará hacer una suma (convirtiendo valores no númericos a número). Si la conversión del valor a número falla, devolverá NaN (Not a Number).
Para comprobar si un número es NaN, se puede utilizar el método Number.isNaN(valor), que devuelve un booleano (true si es NaN, es decir, alguno de los operandos no ha podido ser convertido a número).
Operadores artiméticos
Otros operadores aritméticos son: resta (-), multiplicación (*), división (/), resto (%), y potencia (**). Estos operadores operan siempre con números, por tanto, cada operando que no sea de tipo number debe ser convertido a número.
Operadores unarios
En JavaScript tenemos los operadores de preincremento (++variable), postincremento (variable++), predecremento (--variable) y postdecremento (variable--).
Operadores relacionales
El operador de comparación, compara dos valores y devuelve un booleano (true o false) Estos operadores son prácticamente los mismos que en la mayoría de lenguajes de programación, a excepción de algunos, que veremos a continuación.
Podemos usar == o === para comparar la igualdad (o lo contrario !=, !==). La principal diferencia es que el primero (==), no tiene en cuenta los tipos de datos que están siendo comparados, compara si los valores son equivalentes. Internamente convierte uno de los valores al tipo del otro para compararlos.
Cuando usamos === (o !==), los valores además deben ser del mismo tipo. Si el tipo de valor es diferente (o si es el mismo tipo de dato pero diferente valor) devolverá falso. Devuelve true cuando ambos valores son idénticos.
Debido a esta característica del lenguaje, podemos simplemente evaluar cualquier valor en una estructura condicional. JavaScript obtendrá su equivalente booleano (true o false) y evaluará dicha condición en base a ello
Otros operadores relacionales para números o strings son: menor que (<), mayor que (>), menor o igual que (<=), y mayor o igual que (>=). Cuando comparamos un string con estos operadores, se va comparando carácter a carácter y se compara su posición en la codificación Unicode para determinar si es menor (situado antes) o mayor (situado después). A diferencia del operador de suma (+), cuando uno de los dos operandos es un número, el otro será transformado en número para comparar. Para poder comparar como string, ambos operandos deben ser string.
Operadores lógicos
Los operadores lógicos son negación (!), y (&&), o (||). Estos operadores normalmente se usan en combinación con los operadores relacionales formando una condición más compleja. El resultado final siempre es true o false.
Se puede usar el operador &&, o el operador ||, con valores que no son booleanos. La expresión devolverá uno de los 2 valores. El operador || devuelve el primer valor si este equivale a true, o el segundo en caso contrario. El operador && hará lo opuesto (devolverá el segundo valor solo si el primero es cierto).