| 
		
			Сообщение от voraa
			
		
	 | 
	| 
		Операции && и || не булевы, а логические. Так они названы в спецификации. Булевые операции подразумевали бы, что их операнды должны иметь тип boolean и выдавать такой же результат.
	 | 
	
Булевы операции, или логические операции в первую очередь и предназначены для работы с булевым типом данных, или логическим типом данных. Это одно и тоже — Boolean или logical data type. Логический тип данных ещё называют булевым типом в честь английского математика и логика Джорджа Буля.
	
	| 
		
			Сообщение от voraa
			
		
	 | 
	| 
		Операция + ни грамма не ассоциативная.
	 | 
	
 Опять же, вы не учитываете типы! Когда и правый и левый операнды имеют одинаковый тип (String, Number или BigInt соответственно), то выполняется ассоциативность. В спецификации указано, что операция + 
в конечном счёте производит конкатенацию строк или сложение чисел.
alert(("a" + "b") + "c" === "a" + ("b" + "c")); // true, поскольку ассоциативность выполняется
alert((1 + 2) + 3 === 1 + (2 + 3)); // true, поскольку ассоциативность выполняется
alert((1 + 1) + "1" === 1 + (1 + "1")); // false, вы конечно можете и тут подобрать true, но тут разные типы, это плохая практика — отстреливать себе ноги и играть с мухой без головы, понапихают разного рандомного говна в операнды, а потом сидят и задают тупые вопросы, типа а почему там нет ассоциативности!
	
	| 
		
			Сообщение от laimas
			
		
	 | 
	| 
		Так что или чем тогда определяется порядок выполнения операторов
	 | 
	
 В спецификации указаны правила разбора выражении рядом с алгоритмом выполнения (Runtime Semantics: Evaluation)