 Now, this is, in effect, joining different tibbles and this is why it's important to know whether you have data stored as variables that you add to a tibble or as a separate tibble that you want to join two tibbles together. There are a lot of ways that you can join tibbles. You see here six different ones called inner, left, right, full, semi, and anti. You just take two data frames, two tibbles in this case, X and Y, and join by some variable that is common to them both. So an inner join keeps only rows from both sets that match according to the variable. So it will take a tibble called gender, a tibble called universe, and it will join them, but only keep the ones that occur in both if they match by name, right? That might seem obvious, but it will get confusing because there are six different ways to join things. So inner join, just so you know, keeps rows from both if they match according to the designated criteria. Now left join keeps all of the first data set that you list here, that's why it's called left because it's the leftmost of these two options, and keeps the things that match according to name from the second. So essentially in this case, you can introduce missing variables because it keeps everything from here and adds on stuff from here, but only if it matches according to the criteria. Right. Now right join does the same basic thing, but it keeps all of the second and adds information from the first only when there's a match. So again, this will introduce missing variables, but they will be in a different place. A full join is all of the first and all of the second matching where possible by name. This again introduces missing variables, this time in two different places because they potentially each have missing variables. Only those that match have the full non-missing variable rows. Now a semi-join rows from the first, but only if they match the second. So this one has no missing variables because if it comes to a point where it would include a missing variable, it chucks out the row instead. So if that makes sense, an anti-join is rows from the first if there is no match in the second. So this is a way of saying keep all the things from this list if those things do not appear in the other.