Cells and genes filtering

This is a very basic quenstion. We usually do basic filtering to remove some cells and genes, for example,
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
I can understand the reason why we filter cells, because they may be some empty droplets. But why do we filter the genes ?

I tend to filter out genes which aren’t expressed at all, since tools often expect you’re not passing in data where one of the variables are all zero.