So, when I was a comparitive novice to the novice I am right now, I used to think that these two things were syntactic sugar for each other, ie. that using one over the other was simply a personal preference. Over time, I'm come to find that these two are not the same thing, even in a default implementation (see this and this). To further confuse the matter, each can be overriden/overloaded seperately to have completely different meanings.
Is this a good thing, what are the differences, and when/why should you use one over the other?