0/0 is an indeterminate form, meaning you can define an operation that is equivalent to dividing zero by zero in many different ways, and it can give you any answer that you like. What you get depends on the "strength" of each zero, in the following and very handwavy sense which might make a mathematician cringe. A stronger zero in the numerator makes it act like "zero divided by a nonzero number", which gives you zero. A stronger zero in the denominator acts like "a nonzero number divided by zero", which gives you +/- infinity. "Equal strength" of zeros acts in some ways like cancelling, and can give you a finite nonzero number.
Example: define a function f(x) = sin(x)/x. Plug in x=0, and this is 0/0. But if you look at values of x that are arbitrarily closer and closer to x=0, then you find outputs f(x) that get arbitrarily closer to 1. Indeed, the limit of this function as x goes to zero is 1. Using the very handwavy but useful way of thinking about it: this is because sin(x) acts like x for values of x very close to 0, which makes the function sin(x)/x near x=0 look like x/x which is 1. We can also easily modify this to make the limit equal to any number that we want. Simply multiply the sine function in the numerator by that number.
Another example: define a function f(
) = 2
+ 1). In this case, too, when
=0, we have 0/0. But happy face squared grows more rapidly than the natural log of happy face, so the "zero in the numerator is stronger", and this limit is 0.