Operadores de comparação geralmente retornam valores únicos true ou false.

Operadores lógicos permitem comparar os resultados de mais de um operador de comparação.

/*                          expressão 3                     */
(    (10 < 5)                   &&                (4 >= 6)   )
/*  expressão 1           operador lógico         expressão 2
Dez é menor que cinco?                        Quatro é maior ou igual a seis?
		  false                                          false

&& - E lógico, este operador testa mais de uma condição.

let n1 = 4;
let n2 = 8;
let x  = 5;
let y  = 3;

// Verifica se o aluno passou nas duas provas.
let result = (n1 >= x) && (n2 >= y);
let msg;

if (result == true) {
    msg = 'Sim, você passou na prova';
} else {
	  msg = 'Não, você não passou na prova';
}

// OUTPUT: "Não, você não passou na prova"

true   &&  true  retorna true

true   &&  false retorna false

false &&  true retorna false

false && false retorna false


|| - OU lógico, este operador testa pelo menos uma condição.

let n1 = 4;
let n2 = 8;
let x  = 5;
let y  = 3;

// Verifica se o aluno passou em uma das provas.
let result = (n1 >= x) || (n2 >= y);
let msg;

if (result == true) {
    msg = 'Sim, você passou na prova';
} else {
	  msg = 'Não, você não passou na prova';
}

// OUTPUT: "Sim, você passou na prova"

true   ||  true  retorna true

true   ||  false retorna true