Java - Orden de operaciones - Uso de dos operadores de asignación en una sola línea

¿Cuál es el orden de las operaciones cuando se usan dos operadores de asignación en una sola línea?

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: Gracias por las publicaciones. Obtengo que = toma valores de la derecha, pero cuando compilo esto obtengo:

9 9 6

Pensé que habría sido una excepción ArrayOutOfBounds, pero está asignando 'a [i]'antes d se mueve sobre el 9. ¿Solo hace eso para los arrays?

Respuestas a la pregunta(8)

Su respuesta a la pregunta