Ótimo conteúdo. Cobriu bastante o assunto.

Não sei se já viu esse caso aqui:

x = [0, 1, 4, 6, 19]
y = 0;
x[y++]

Nesse primeiro caso, o x[y++] retorna 0, pois primeiro ele fez x[y] e depois ele fez y= y+1.

Já nesse outro caso:

x = [0, 1, 4, 6, 19]
y = 0;
x[++y]

Agora o retorno de x[y++] é 1, pois primeiro ele fez y=y+1 e depois, com o resultado de y=1, ele faz x[y].