Well, you don't have to in this case (because the [] operator has higher precedence than the & operator--that is, it is evaluated 1st even without the parens).
But when in doubt (or if you think anyone reading your code would be in doubt), use the parens.
I personally use the following rules, even though I have C++ operator precedence pretty much memorized, for code readability:
1. Generally use parens for everything, except:
2. Don't use parens to show that multiplication and division has a higher precedence than addition and subtraction: that should be natural to every programmer.
3. Don't generally need parens to show that arithmetic operators have lower precedence than pointer or object operators: That should be intuitive for C/C++ programmers and the extra parens would make code hard to read.
4. Don't generally need parens to show that logical operators have lower precedence than arithmetic operators. Same reason as #3.
5. Don't generally need parens to show that assignment operators have lower precedence than (almost) everything else. Same reason as #3.
6. I'll sometimes cut the parens if there are too many already and the intent of the code should be obvious. The overarching goal is code readability, and too many parens can hurt that as well as too few. Obviously you always have to use parens to override the default precedence rules.