Why are assignment chains are evaluated in right to left order?

```
i = j = k = 10;

```

is

```
k = 10;
j = k;
i = j;

```

Addition is evaluated left to right:

```
public static void main(String[] args)
{
    int i = m1() + m2() + m3();
}

public static int m1()
{
    System.out.println("m1");
    return 1;
}
public static int m2()
{
    System.out.println("m2");
    return 2;
}
public static int m3()
{
    System.out.println("m3");
    return 3;
}

```

Output:

```
m1
m2
m3

```

According to which rule are assignment operator chains processed in right to left order?