### Single assignment

In the case of single assignment, Ruby evaluates the left-hand side before the right-hand side.

In the below example, the last expression calls lists, then data , then []= on the result of lists.

### Before

Multiple assignments didn’t work this way. Let’s checkout the below example.

Before Ruby 3.1, the above expression would be evaluated in the following order:

1. data
2. num
3. lists
4. []= called on the result of lists
5. tag
6. priority= called on the result of the tag

### After

Starting with Ruby 3.1, multiple assignments evaluation order has been made consistent with single assignment evaluation order.

For the above expression, the left-hand side is evaluated before the right-hand side and the order is as below:

1. lists
2. tag
3. data
4. num
5. []= called on the result of lists
6. priority= called on the result of the tag