Is it because of operator precedence ? I thought it is a case of Evaluation order and Assignment order rule. Evaluation order is from left to right; so array(index) get evaluated first, and at that time since index had a value 0 the first element of the array is picked up.
Then because assignment order is from right to left, 3 is assigned to index first and then that value of index is assigned to array(0).
Also, is  an operator ? I think it is not.
Please correct me if I am confusing others with wrong understanding.