имхо, правильнее будет как-то так:
1. Любое выражение — это инструкция.
2. Не каждая инструкция — выражение.
Выражение — инструкция, присваивающая правую часть выражения левой части (выражает левую через правую).
a = 10; — выражение.
var a = 10; — инструкция и выражение (сначала [var a] — инструкция, которая не является выражением т.к. присваивания нет, а потом уже [a = 10] — выражение, которое можно также назвать инструкцией).
if (a){} else{} и т.д. — инструкция, но не выражение, ибо ничего не выражается, но действия происходят.
Точно также и с
w = x+y+z :
1. x+y+z — инструкция, но не выражение.
2. w = то, что вернула инструкция (x+y+z) — выражение и инструкция присваивания одновременно
Как-то так) с составными также.