TagSet defines upvalues or downvalues as appropriate.
The symbol f in f/:lhs=rhs must appear in lhs as the head of lhs, the head of the head, one of the elements of lhs, or the head of one of the elements.
A common case is f/:h[f[args]]=rhs.
You can see all the rules associated with a particular symbol by typing ?symbol.
If f appears several times in lhs, then f/:lhs=rhs associates the assignment with each occurrence.
When it appears in unevaluated symbolic form, TagSet is treated as a scoping construct so that variables in nested occurrences are renamed if necessary.