Java - Ordem das operações - Usando dois operadores de atribuição em uma única linha

Qual é a ordem das operações ao usar dois operadores de atribuição em uma única linha?

public static void main(String[] args){
    int i = 0;
    int[] a = {3, 6};
    a[i] = i = 9; // this line in particular
    System.out.println(i + " " + a[0] + " " + a[1]);
}

Edit: Obrigado pelas mensagens. Eu entendo que = recebe valores da direita, mas quando eu compilo isso, recebo:

9 9 6

Eu pensei que teria sido e ArrayOutOfBounds exceção, mas está atribuindo 'a [i]'ante está se movendo sobre o 9. Faz isso apenas para matrizes?

questionAnswers(8)

yourAnswerToTheQuestion