Все достаточно просто. В основном это легко можно понять если использовать вызов методов в javascript.
Например:
function a(variant){
console.log("run a");
return variant;
}
function b(variant){
console.log("run b");
return variant;
}
a(false) & b(false); //произведет вызов обеих функций, даже если первый метод вернет false
a(true) | b(true); //Аналогично первому вызовет оба метода даже если первый вернет true
a(true) || b(true); //второй метод не будет вызван, т.к первый уже вернул true
a(false) && b(true);//второй метод не будет вызван, т.к первый вернул false