We can easily see that limits commute with each other, as do colimits. If we have a functor , then we can take the limit either all at once, or one variable at a time: . That is, if the category has -limits, then the functor preserves all other limits.
But now we know that limit functors are right adjoints. And it turns out that any functor which has a left adjoint (and thus is a right adjoint) preserves all limits. Dually, any functor which has a right adjoint (and thus is a left adjoint) preserves all colimits.
First we need to note that we can compose adjunctions. That is, if we have adjunctions and then we can put them together to get an adjunction . Indeed, we have
We also need to note that adjoints are unique up to natural isomorphism. That is, if and then there is a natural isomorphism . This is essentially because adjunctions are determined by universal arrows, and universal arrows are unique up to isomorphism.
Okay, now we can get to work. We start with an adjunction . Given another (small) category we can build the functor categories and . It turns out we get an adjunction here too. Define for each functor . The unit induces a unit . We can similarly define and , and show that they determine an adjunction
Now let’s say that and both have -limits. Then we have an adjunction and a similar one for . We can thus form the composite adjunctions
So what is ? Well, is the functor that sends every object of to and every morphism to . Then composing this with gives the functor that sends every object of to and every morphism to . That is, we get . So . But these are the two left adjoints listed above. Thus the two right adjoints listed above are both right adjoint to the same functor, and therefore must be naturally isomorphic! We have for every functor . And thus preserves -limits.