Many question types can be filtered based on earlier question types. You could do this manually using the expression manager, but there is a far simpler way to do this by using advanced options. See for example the below image. The brands selected in the top question appear as options in the second question.
This can be chained (cascaded) with more followup questions, for example with a scale question for each of the brands that a consumer is familiar with, as in the below image.
There are two types of filters, a basic filter, and an exclusion filter. The basic filter shows only those options that are selected in the first question, while the exclusion filter shows all options BUT those that were selected earlier. Enter the code of the question you want to use as a filter in the filter field of the question you want to apply the filter to. You can find this field in the logic section of the advanced options.
Both questions have to have the same sub-questions/answers. If an answer is present in the first question but not in the second, it will not show, even if it is selected in the first question. An exception to this rule is that if an option is present in the second question and not in the first, it will always show. For example, if we added Landrover to the scale array above but not to the familiarity question, it would always show up in the scale array.
There are many different ways filtering can be used, and it can be cascaded indefinitely should you so desire. However, there are some things filters cannot do. For example, say you wanted to ask further sub questions about those brands where a score of 8 or higher was given. To do this, a filter would not suffice. Instead, you would have to set up a question for each brand, and use relevance equations to show only those where an answer was given (eliminating those brands that are not in the list), and the score was 8 or higher (eliminating the brands that were rated lower). You can find more information on routing here.