Well, what does that really say, mskeel? The confusion seems to be that something like
C#:
someArray[someIndex] = someValue;
is viewed as a two-part operation. You can think of it as calculate the value and store the value. You can also think of it as find the desination and then put the value there. Neither of the two is the case. I noticed that you used the term "visited," IceAzul. There is a difference between determining the destination and actually accessing ("visiting") it.
There are three parts to this operation: evaluate the destination, evaluate the value, and perform the assignment. The third part is dependent upon the first two parts, but each of the first two parts is independent. There is no need for one to be evaluated before the other.
In other words, yes, you need to know where you will put something before you can put it there, but you also need to what to put there before you can put it there. The order in which these things are done is (presumably) simply a matter of the order that they appear in the syntax. There is no other reason to do it any particular way.
If you were to hand-write the MSIL you could do it in which ever order you like. The
stelem (store element) MSIL opcode lends itself to evaluating the destination first, but with an extra opcode or two it can be done the other way. As to which way is more intuitive, it depends on what analogy you use to understand assignment within an array.
If I had to guess without actually writing the code and executing or decompiling it and I hadn't looked at a decent amount decompiled code, I would probably expect that the value to be assigned would be calculated first, but I wouldn't count it as more than a guess.