UpValues(^:=) and how it works.

I have looked on several forums(stack exchange etc.) but somehow I am not able to understand the concept of UpValues(^:=). I do understand DownValues and how they work. Could someone please explain in the clearest way possible how it works and add an simple example to it.

There is tutorial on UpValues here, which may be useful to read:

http://reference.wolfram.com/mathematica/tutorial/AssociatingDefinitionsWithDifferentSymbols.html