Why overload is done?

why did we overload the operator function? what benefit does it provide?

it is important and used to overload inbuilt functions according to our requirement
for ex
it is used in compare function of priority_queue

priority_queue<node,vector<node>,nodeCompare > pq;
class nodeCompare
{
public:

bool operator()(node a, node b)
{
    if(a.second==b.second)
    {
        return a.first<b.first; 
    }
        return a.second<b.second;
}

};