The basic object in GR is the spacetime. As a mathematical object, formally it is a differential manifold, but for our purposes it is enough to consider it as a set of points called events, which can be described by coordinates. In GR, the spacetime is 4-dimensional, which means that we need 4 coordinates - one temporal and three spatial ones.

The coordinates can be denoted by pretty much anything (like , , , ), but since we will refer to all four of them at multiple occasions, it will be convenient to denote them by numbers. It is pretty standard to denote time by 0, and the spatial coordinates by 1, 2 and 3. The coordinate number will be written like this: (attention: in this case it is *not* a power!). here is called an **index** (here: an upper one). By convention, if we mean one of the 4 coordinates, we use a greek letter as the index; if only the spatial ones are to be considered, we use a letter from the latin alphabet.

So now we know how to describe points ("places") in spacetime. But in spacetime, as in every space, we have not only places, but also directions. Those are described with **vectors**. Vectors are written much like points - they are also described by 4 coordinates, denoted . In this case they don't mean a place in the spacetime, but the proportions of movement along respective coordinate axes. Let me explain in detail.

Let's imagine an ordinary plane with and coordinates. Each vector in this plane will also have and coordinates - let's denote them, for example, and . They can be interpreted as a receipt: to move in the direction described by this vector, you need to add to the coordinate of the point, and to its coordinate. For example, moving from the point by a vector will get us to the point .

The direction doesn't end on this one point, though. We can go farther, to , , ,... We can make such "steps" as many times as we like, but we can also make for example half of a step, to . Vectors have then the same **direction** as , but different **magnitudes**. They can also have the same or the opposite **sense** (the same if , opposite if ).
Having a function defined on our space (on a plane it will be ) and a vector, we can ask about the derivative of this function in the direction of this vector - it will tell us how fast our function changes, when we move in that direction. As it turns out, the derivative in the direction of equals . In a space in which we have coordinates numbered with an index , we can write it this way: .
It is worth noting that if we multiply the vector by some number , the derivative will also get multiplied by . This means that the longer the vector, the greater the value of the derivative. Thus we can say that the vector describes not only a direction, but also the velocity with which we move in that direction. The derivative then tells us how fast the function changes, when we move with that velocity.
Now a few notation conventions again: first, is often being written for the sake of convenience. Here we have the index at the bottom - you can remember it this way: when we differentiate with respect to something with an index, the index switches places (from top to bottom and vice versa). It will be important in a while.
We have then such an expression: . Expressions with such sums appear in GR so often, that Einstein himself decided they shouldn't be written and introduced the so-called **summation convention**. It says just that every time an index is repeated in an expression, once as an upper index and once as a lower one, the expression should be summed for all the values of that index. This lets us write our expression as . This convention is the main reason of the importance of positions of indices (there is also another matter, but it is beyond this article). Summing over the repeated index is called a **contraction**.

Let's take a closer look at our directional derivative: . Those are actually partial derivatives of the function (for different values of - in spacetime, four). It looks a bit like a point or a vector, except the index is at the bottom. Such a thing is called a **covector**.

The derivatives of a function usually depend on the point at which they are being calculated, so the coordinates of this covector will also depend on the point in space. We can think of this as if we had a covector in every point in space, with coordinates equal to the derivatives of the function at that point. We don't have a single covector here then, but a whole **covector field**. In the same way, when the coordinates of a vector depend on the point in space, we are dealing with a **vector field**.

Often vector and covector fields are just called vectors/covectors. It's not a problem, since single (co)vectors at a single point are almost never being considered. So every time when we write just , we will mean the derivative of in the direction of *calculated at every point in space separately*.