Operadores lógicos

El tipo de datos lógicos o booleanos está formado por un par de valores, a lo que se les designa como true (verdadero) y false (falso), que se transforman en 1 y 0 si deben convertirse en tipos numéricos.

Este tipo de datos se puede manejar con los operadores lógicos, usados para fundamentalmente para realizar comparaciones entre valores.

Al usarlo con objetos recordemos que los objetos son referencias. Por tanto si en una comparación obtenemos que dos objetos son iguales, eso realmente se debe interpretar como que son el mismo objeto .

Son operaciones análogas a las operacioes a nivel de bit, pero en este caso solo trabajan con valores booleanos, no con las represnetaciones binarias de datos numéricos.

Negación: !
Es el operador mas simple de todos, se usa para invertir un valor de true a false o viceversa. Se usa con valores o con expresiones lógicas, invirtiendo su resultado. Es un operador con la mínima precedencia, por eso siempre es conveniente poner paréntesis a las expresiones que queramos negar con este operador. También pude usar junto a los operadores de igualdad (==) e identidad (===) para invertirlos.

var cierto = true;

var falso = !cierto;

console.log ( 5 >4); //true

console.log (! (5>4)); //false

Si se comparan números con cadenas, JavaScript intenta convertir internamente los datos. En los operadores relacionales (>, <, >=, <=) intenta convertir los datos en tipo número. Para los operadores de igualdad (== !=) intenta convertir los tipos de datos a cadena, número y booleano. Los operadores de identidad (===, !==) no realizan conversión de tipo.
Mayor que >
Compara dos valores y devuelve true si el primero es mayor que el segundo. Compara tanto números como cadenas.
var hoy = 4; ayer = 10, comp;
comp = hoy > ayer      /* comp adquiere el valor false*/
Menor qué<
Compara dos valores y devuelve true si el primero es mayor que el segundo. Compara tanto números como cadenas.

var hoy = 4;

var ayer = 10

var comp;
comp = hoy > ayer         /* comp toma el valor false*/

Mayor o igual >=
Compara dos valores y devuelve true si el primero es mayor o es igual que el segundo. Compara tanto números como cadenas.

var hoy = 4;

var ayer = 4

var comp;

comp = hoy >= ayer         /* comp adquiere el valor true*/

Menor o igual <=
Compara dos valores y devuelve true si el primero es menor o es igual que el segundo. Compara tanto números como cadenas.

var hoy = 4;

var ayer = 4;

var comp;
comp = hoy <= ayer         /* comp adquiere el valor true*/

Iguales ==
Compara dos valores y devuelve true si ambos son iguales. Compara tanto números como cadenas. Si en lugar del doble igual usamos != la comparación es comprobar si son diferentes.

var hoy = 4;

var ayer = 4

var comp;

comp = hoy == ayer         /* comp adquiere el valor true*/

comp = hoy != ayer         /*comp es false */

Idénticos ===
Similar a == pero también compara el tipo de datos de los opeandos. Es una igualdad estricta que devuelve true si el primero si ambos son iguales en valro y tipo, o sea, idénticos. También puede invertise ñadiendo el operador negación: !==, en este caso comprueba que no son idénticos.

var hoy = 4;

var ayer = '4'

var iguales, identicos;
iguales = hoy == ayer;         /* comp adquiere el valor true*/
identicos = hoy === ayer        /* comp adquiere el valor false*/

AND lógico &&
Este operador es similar al AND a nivel de bit pero opera con valores booleanos. Se utiliza para concatenar comparaciones, es decir, para comprobar varias condiciones . El resultado sólo será true si todas las comparaciones o los perandos lo son. Es omo un producto si uno solo de los factores es 0 (false) el resultado es 0 (false)

var op1 = 2, op2 = 50, op3 = 25;

var comp;
comp = (op1 > op2) && (op1 < op3);       //false

comp = (op1 < op2) && (op1 < op3);       //true

OR lógico ||
Como el anterior, sirve para realizar comparaciones compuestas y solo devolverá false cuando todas las comparaciones los sean. Es decir basta que una comparación sea true para que devuelva el valor false. Es como una suma de ceros y unos, si uno solo de los sumandos es 1 (true) el resultado es 1(true)

var op1 = 2, op2 = 50, op3 = 25;

var comp;

comp = (op1 > op2) && (op1 < op3);   /*comp toma el valor true */

Resumen

Los operadores relacionales o lógicos comparan unos valores con otros y realzian operaciones con valores lógicos (true, false)

Los valores lógicos (true, false) se pueden invertir (negar) con el operador ! (signo de exclamación cerrada).

De la misma manera se pueden invertir los resultados de las comparaciones, pues son valores lógicos o booleanos.

 AND logico
El operador && (and logico) solo devuelve true si ambos valores son true. Es como un producto (true es 1, false es 0)
 OR logico
El operador || (or logico) devuelve true si al menos un operando es true. Es como una suma(true es 1, false es 0)