to make the code more readable, could we rename the `trackByIdFn` in the outer scope to `trackByIdExpFn` and introduce a new variable called `trackByIdFn` in this ($watchCollection callback) scope. With that change the code is easier to understand and the bug will be fixed no matter what's the order of operands in this expression.