what's going on guys it's your boy dpj here today with another destiny video and today we have top five sword plays of the week and number one is damn an impressive streak but guys if you enjoyed the video do drop a like and a appreciate the support subscribe for daily destiny and I'll catch you guys on that next one this is amazing heavy ammo available you've got 30 seconds ammo available always wrong


Good morning. My name is Nancy Lindborg. I'm the president of the US Institute of Peace. Delighted to welcome everybody this morning for our fifth in a series of bipartisan congressional dialogues. We launched this series earlier this year to provide a platform for members of Congress who are working from opposite sides of the aisle to advance common interests. And USIP, in fact, was founded by Congress in 1984 as a nonpartisan federal independent institute dedicated to reducing violent conflict around the world. Sorry. So I'm honored to have with us today two leading congressional voices. No, I have some water on the floor. Both of whom are dedicated to advancing peace and security around the world, Chairman Ed Royce from California and Senator Chris Coons from Delaware. Thank you both for joining us this morning. Chairman Royce has served as chair of the House Foreign Affairs Committee for more than five years, previously chair of the African subcommittee. Senator Coons serves on the Senate Foreign Relations Committee and previously chair of the African subcommittee. Both of our speakers are at the forefront of efforts today in Congress to tackle some of the most pressing security challenges facing the US. And they have long dedicated engagement in Africa. Both of them have a wealth of experience, of knowledge, and they've seen these problems up close. These are not our own chair experts. Chairman Royce recently traveled to Mozambique, Botswana, and Angola to raise the profile of critical issues, such as conservation and wildlife tracking. Trafficking and Senator Coons has been recently to Zimbabwe, South Africa, Niger, and Burkina Faso.  And they know the issues. They know the leaders inside and out. Both are also wonderful partners. And we were pleased to co-sponsor with Senator Coons last year, an event that featured Librarian President Ellen Johnson-Serly, Chairman Royce, joined us for that as well to discuss those elections. So we're very grateful that they're here today to share their views on how to resolve an issue that is fueling conflict in many African nations, combating wildlife poaching and trafficking. We're seeing that illegal wildlife poaching and trafficking has destabilized communities across the African continent. In the last decade, almost half of African's elephants have been killed for the ivory. And some experts are predicting that both elephants and rhinoceros will be extinct by 2013, which is terrible to consider. 2030, 2030. Illegal trade and protected wildlife is up to $7 to $10 billion. And we're seeing that this is the money that is getting into the hands of terrorist groups like El Shabaab and the Lord's Resistance Army. So these are the issues that are destabilizing, particularly fragile countries. This is where USIP focuses many of our efforts. And it's a particular concern as we work with partners in places like DR Congo to root out and prosecute economic and environmental crimes. So this morning, we have a chance to hear from the two leaders on this issue. They've championed this cause. And also today, with Chairman Royce's announcement that he will not seek re-election this fall, hopefully we'll have a chance to hear some of his reflections on 26 years of service in the House of Representatives championing these kinds of causes. Before we begin, I want to invite you to join us on Twitter at USIP and join in today's conversation with the hashtag bipartisan USIP. I encourage you to check out our podcast network, usip.org backslash podcast. It will feature this conversation, as well as other leading voices on conflict prevention and national security. So with that, please join me in welcoming to the stage Chairman Royce and Senator Coons. Chairman Royce, I'd like to invite you to get us started with a few comments. Well, one observation I would make, Nancy, is that we have, I think, an opportunity to have a dialogue here today about what NGOs, what private citizens, what private industry and the government can jointly do in order to try to salvage a situation which is not sustainable. We have a development going on today in which wildlife trafficking is a $10 billion a year business. And the consequences of that, along with development that is not sustainable, is putting at risk the entire continent of Africa with respect to the biodiversity that's on that continent. It's putting at risk the opportunity for future generations of Africans and Americans to enjoy what is one of the most impressive consequences of life on this planet. If you think about elephants and cheetos and cheetos and black rhino, the concept that these species could be removed from the planet are being removed from the planet as we speak. And one of the reasons that Senator Coons is co-sponsor on the Senate side with the DELTA Act and what we're doing with the BILD Act and why we're pushing this in the House is to do something to get the US more engaged immediately. In terms of the Ocavango DELTA, that's the issue that we're talking about today because that is where most of the elephants and black rhino still kindergate there in West Africa. We have a water source. Water knows no national borders, but we have a source of the river that comes down from Angola into Namibia and into Botswana, Zambia. But that river will be diverted if we allow humans to come in and develop that region. And once the water is diverted, the animal life will exist for a while in a desert until it vanishes because that is the only thing that flooding of the Ocavango DELTA every year into the Serengeti or excuse me, into the basin is the only thing that keeps those species alive. So that's a quick overview. Great. Thank you. Thank you. Senator Coons. Good morning, Nancy. Thank you to USIP for hosting bipartisan dialogues. One of the reasons I wanted to be here was both because Nancy Lindborg and USIP are hosting and because it's a chance to once again share a stage with my friend and colleague Chairman Royce. Chairman Royce and Chairman Corker are the reasons that we've gotten so much good work done on foreign affairs and foreign relations. And we just finished traveling together the three of us, along with another senator, two more senators. We were in Helsinki 10 days ago. We had a remarkable trip to Sweden, Denmark, Latvia, and Finland to engage with our northern European security partners. And one of the things that came clearly to me out of that recent trip was just how valuable Chairman Royce has been in being a clear-eyed and positive and constructive voice. Today, we're going to focus on Africa and on wildlife conservation. But I just wanted to start by saying thank you, Ed, for being a remarkable leader in Congress. He's a real Republican. We disagree on some stuff. But I've got to tell you, virtually every time he's had a great idea, it comes over to the Senate. And we say, yeah, it's a really great idea. Let's get this thing done. Or I've run into a roadblock or an issue or a challenge.  He's accessible. He's responsive. He's engaging. That is just in short supply in Congress today. And I am so grateful for what he's done. And Nancy is someone I've known since her work at USAID and in her time at Mercy Corps, where she made an enormous difference around the world. And then in USAID, during a number of crises, from Ebola to the Horn of Africa to a whole range of issues in the Sahel, she's been a remarkable leader. So I'm grateful for what you do here at USIP. Like Chairman Royce, I'm someone who has had the opportunity on the ground to see the consequences of wildlife trafficking and its impact on human communities, as well as on wildlife.  To come over here and lecture us about preserving our beautiful, iconic wildlife when your country's already developed and you've already diverted your rivers. You've already cut down your great forests. You've already plowed up your plains. I have people who are hungry and who need jobs and who need healthcare and who need a future.  We have to find a way that human development on a continent with some of the fastest-growing human population on Earth can work in harmony with conservation of landscapes, of wildlife, of biodiversity. If they are seen as a zero-sum game, people will win because in the end, the pressures on governments, the pressures on community leaders are to meet the needs of families and children rather than protecting iconic wildlife. And in a region of the world where governance and rule of law are so uneven or uncertain and where the pull of the $7 to $10 billion market in wildlife products around the world, but particularly in Asia, is so strong, we will not win unless there is a strategy, and I think there is, a defensible, articulable strategy that links up human development with wildlife conservation. I've had the joy and the honor of working following Chairman Royce's leadership on so many pieces of legislation, from a go over reauthorization extension to the Electrify Africa Act, from foreign assistance modernization to the Global Food Security Act. I mean, it's striking if you had an actual list of how many bills Chairman Royce has led that have had a meaningful impact on the people of the continent of Africa. It's remarkable. Working together on fighting wildlife trafficking and now working together on the Delta Act is a great opportunity, a real blessing and a wonderful experience. So thanks for a chance to be with you and to have a conversation about your real leadership. And I think, Chris, one of the attributes that you speak about there, or one of the attitudes that you hear from African leaders can in fact be shaped by their experiences, their engagement, the existence of Yellowstone gives us a great opportunity because with the ICCF, with the International Conservation Caucus that we have with the Foundation, we have brought over some of these heads of state. And after we got the signature on the Congo Basin Forest Partnership Act in order to set up a park system across Africa, the response when they viewed Yellowstone was, well, this is impressive that Teddy Roosevelt did this. This was your first park and it wasn't until the late 1800s that you did it. This was your first park and there's really nothing here except Bison that really impressed us. And this is the only place you have them and we say, well, yes, we have them here because if Teddy Roosevelt hadn't done this by then they'd be gone. They'd be gone. We had killed everything else until this point except the Bison.  I remember these words. That is nothing compared to what we have on our continent. The diversity we have compared to this and people come from all over the world here. Yes, this is a conservation model which is sustainable for the communities here because we do draw people from all over the globe to see Yellowstone. Well, imagine what that will mean to our people. Exactly. But unless we're connecting this explanation and showing that Roosevelt had this vision and explaining to these heads of state that in this respect they're like Teddy Roosevelt except they have a tremendous amount more to conserve in terms of what is on the continent of Africa. And I think that getting the buy-in not just from the elected leadership not just from the heads of state but the parliamentarians where now we're working with our conservation caucuses in Africa and by the way in Latin America and Europe and we're having these exchanges on the continent are bringing in a new generation of younger African leaders. The meetings that we had when we were in Botswana and Angola including with the tribal leaders there's a million people there for example in the Okevango whose way of life will disappear if we allow the traffickers to continue in their efforts there to remove these species. We, it's on their behalf that we are also engaged but if we can explain how smart development works with conservation to create an environment that's gonna be sustainable for the future that is something that can connect for those communities but we need structures to do it and the Delta Act is intended to provide that structure. And you raise an interesting point in terms of what is most persuasive with the key leaders on the continent and that's a great example. Does that in fact counter the persuasion of seven to 10 billion dollars? Is that, what do you find most persuasive? Well, I think Chris identified the human reaction of wanting to see you know where's show me the money, where's the money? And of course, you know, China, Beijing comes in and says we can divert these rivers we can dam these rivers. We can put this all to agricultural use and here's cash on the barrel head. What we're selling or explaining is a little more complicated but we're explaining that the beneficiaries will be future generations of Africans as well as people worldwide who will be able to experience the unique setting which otherwise will be removed from the planet and secondarily that the benefits of Beijing diverting that river are only going to be temporary. The sustainable efforts that instead can offer promise for a future which brings tourism, which brings investment from all over the world with an intent of you know having people be part of this unique experience which exists there alone in the Okavango. I mean this is a different model. It's and I think for civil society in much of the world there is some measure of disappointment in terms of what they've seen with respect to these big projects that are not sustainable for the long term and have led you know once you clear cut the timber and with open pit mines remove the minerals and poached all the animals as you put the roads into do all of that once those resources are gone the aftermath of it is not a pretty sight nor is it one that's gonna help those populations. So I think these impulses compete but this is why the leadership of NGOs in the United States this is why USAID is so important. This is why your work with USIP is so important. I think that these all contribute to a sustainable future for humans. Can I back us up just for one minute? I'd love to ask both of you how you found your way to this partnership which is both bipartisan and also across the house and the Senate. How you found your way to this partnership and to this issue? Well, Ed's the leader. I'm the follower on this. He's more a senior in his career in public service in the house. I was elected to the Senate in 2010. I, as some of you know, spent time in East Africa as a college student in 1984 and in South Africa in 1987. The time I was elected that was decades earlier. I thought of myself as having very narrow, very limited, very superficial experience in Africa. And a guy named Russ Feingold, former senator who was the outgoing former chairman of the Africa subcommittee. I got seated right after the election because mine was a very special election in 2010. And so Russ and I overlapped for about six weeks and he asked me to come sit down with him. And he pushed me to agree to be the chairman of the African subcommittee which I didn't even realize was a possibility. And he said, you're an expert in Africa. And I said, what are you talking about? And he said, well, don't you speak some Swahili? I said, Nimi Salzote, I've forgotten everything. And he said, well, didn't you write a book on South Africa? And I said, well, yeah, that was like 25 years ago. He says, do you know all of the countries and their capitals? I said, doesn't everybody? I said, and their exports and their major religions. And he looks at me and he says, son, you're gonna realize something here pretty quickly. Most senators don't realize that Africa is made up of countries. He said, the number who are engaged are sadly too few, but here's the positive. The senators that are engaged in Africa are wonderfully bipartisan, are deeply committed, and are a terrific group to work with. And it's not something that 70 senators have an opinion on and where you have to wait 10 years to have an impact. You literally can have an impact within your first six months. And I was puzzled by that, I assumed it was obviously untrue, but within six months of taking over the chairmanship of the Africa subcommittee, I was stunned at how there are real Africanists in the room. I continue to admit that I am barely minimally knowledgeable. I've now been to 29 countries on the continent, quite a few of them two or three times, but in these very brief congressional trips. On one of my earliest trips to the continent, I had a long layover in an airport lounge. I think it was in Heathrow, but I may be wrong. And Chairman Royce and a group of his folks were on their way back. And we ended up spending an hour talking, and I came away going, here's someone who really understands the continent, its challenges, and how to craft and move meaningful legislation. How to actually do the legislative work. It's great to be an advocate and to be passionate and say someone should do something about this. It's a whole nother deal to actually write a bill.  And Chairman Royce was a wonderful guide in how to follow that path. So that's how we, that's my recollection about it. That is how we first met. Heathrow, Heathrow Airport. Heathrow. And I mean, I think that's happened literally several times. I have the impression that like, I was on my way to Liberia during Ebola and I ran into him as he just finished a hearing and we had a long conversation about CDC and its role too, but we have traveled together on few occasions. We have legislated together on many. And that's been a great partnership. And how did you find your way to this issue? I was elected in 92, and the Africa Subcommittee was one of my early interests and ended up chairing that committee. Went to see Johnny Carson here in the front row when he was ambassador to Zimbabwe at the time. And in that particular trip, we were in Angola, we were in Congo, Zimbabwe, South Africa, and advancing some concepts that later would become the foundation for the Congo Basin Forest Partnership. In 2002, we got that measure through for a national park system across seven different landscapes in Africa. And besides Johnny's help, I think Colin Powell deserves a fair measure of the credit for weighing in behind that legislation. But it was the interest in trying to create something permanent that would see to it that on the US side as well as the African side we kept our commitments that led to my thought that we needed a caucus. And originally it was a small caucus, myself and John Tanner. Tom Udall, we signed Tom up, he was a good ally. And we built that as a bipartisan caucus. Today it's one of the larger caucuses. And I still stayed very involved in that effort. But for eight years I chaired that Africa subcommittee and then as I moved my way up through the house eventually became full committee chairman. And it gave me the opportunity over the years to bring sort of a unique perspective I think in how we could approach this in a bipartisan way and how Congress could be permanently engaged in a partnership with NGOs, with a private sector with the African NGO community as well. And with the Diplomatic Corps, the African Diplomatic Corps here on the Hill in order to try to jointly beyond the African Growth and Opportunity Act and other things like that, how we could sort of have a vision for US engagement on the continent which would be productive and which would be empowering for Africans. And I thank Johnny for, I thank the ambassador here for a lot of the work that he was engaged with along the way in West Africa, South Africa and eventually across all of sub-Saharan Africa with different initiatives which we're still trying to build on today with the Build Act. And thank you again, Senator, for your help on that. We're gonna get that done. When you look at the possibility of rhinoceros and elephants being extinct by 2030, which is a horrifying thought, what do you see as the greatest opportunity to interrupt that trajectory? And are you hopeful? I'm hopeful in this sense. I was the author of the End Well Life Trafficking Act and my first impulse in finding that China was trying to get ahead of the implementation of the act was one of great satisfaction because it meant that the campaign done by young Chinese and civil society in which they were sending out messaging all across China about the precarious nature of these species, it was having an impact all the way up to the Chinese Polypure. There was a desire throughout Chinese society to do something about reversing the demand that existed there for ivory in the sense of status. And it became so pronounced that the Chinese took the steps of going in and closing down, shuttering all the ivory carving factories and ivory stores across China. And we gave them great credit for their leadership on this and we should be mindful. The demand we know people, I'm sure every one of you have been in an office or somewhere where you've seen an American who has carved ivory that he's brought back from some part of the world or for those of you who know Europeans, we have the same problem. This is a universal problem of reaching and shaming and exposing a process which, yes, benefits the El Shibab, benefits the Lord's Resistance Army if we wonder about where these terrorist groups get their funding, but it's driven partly by the demand of our friends and neighbors. And the fact that China could get out ahead of this means, A, that we should think longer and harder about how to get these narratives into China and social media, how to help young Chinese who want to be part of bringing conservation efforts to China, helping them to be successful, but secondarily, about our own responsibility in all of this. And so I think this is something we can sit back for a minute and learn from. How else can we use this model of shaming? We've used it effectively now on human trafficking. We've used it effectively on injury, helping to end the ivory trade. How else can we use this to push the next generation in responsible ways? And how can we combine with the NGO community just as this was done in China? I mean, this is partly a grassroots thing among young Chinese, many of them out of Hong Kong who elicited or created this enthusiasm all across Southeast Asia. We've got a lot of work to do. No doubt about that, but we're on to something. Are we seeing a drop in demand? Yes, you are. You've seen a drop in demand, but at the same time, you're seeing an increase in firepower on behalf of Al Shabaab and groups like this. And so part of the answer, we've worked with the park rangers. It's an inspiring thing to see American park rangers go to Africa in order to share their practices with park rangers who know far better how to track, far better about the animals they're trying to protect, are the bravest on the planet in terms of trying to protect these herds. But at the same time, do not have that firepower. And part of what we're trying to do is get them in a position, get the park rangers across Africa in a position. And in some of these parks, you'll find you're dealing with third generation park rangers, but you're also dealing with sons and daughters who've lost their fathers to this fight because the terrorists and the poachers have taken them out. And so giving them the training in how to use, how to combine with our efforts to use satellite technology to follow the poachers. Trying to take out the Lord's Resistance Army, Georgia, which is something that we worked on in order to try to bring US special forces in with their, they're not involved in the fight, but they're involved in the tracking efforts using some of our capabilities, applying this to the effort. So let's unpack that a little bit, Senator Coons, how does that train of financing work, that it goes from poachers into the hands of terrorists? And what are the best ways to interrupt that? So first, one of the most important advances in the last few years is better understanding that. We had made dramatic progress in terms of conservation, conservation systems, wildlife protection, improving rule of law across a number of years, but in the last decade, it's sharply reversed. And that's partly, as Chairman Roy says, because of an increase in firepower, what that means is there are complex networks of trafficking that move illicit product, whether it's drugs, minerals, wildlife product, or people. And these transnational networks don't particularly care, whether what they're moving is heroin or rhino horn, whether it's ammunition and weapons, or it's people being sold into sexual slavery. They don't really care how they're making their money, and they have gotten more and more sophisticated. And they have penetrated and undermined rule of law. They've even gotten so far as to have diplomatic pouches used at times to move wildlife product. And we all know the corrosive impact of the money that drug trafficking can present. There's communities all over the United States where there are killings every day and where there is drug use every day as we see illicit drugs flood into our country. And we've dedicated billions and billions of dollars to interdiction and prevention. So this isn't something that happens in remote far off places. It affects almost literally every human community on the planet. The large scale movement of illicit destructive things. Many of us are familiar with what happened to Eastern Congo with the mining of very needed, very precious, but very disruptive special minerals and metals that are required for advanced electronics, which had a profoundly destabilizing impact on the DRC. So first, figuring out who's moving what from remote places where either wildlife is killed, things are mined, heroin or cocaine is processed. Figuring out the process by which those things are gathered and then connected to transnational networks and then moved took us a while. Investing in the training abilities of the Fish and Wildlife Service on the ground to help park rangers to strengthen the farthest out in the field protection for wildlife. For example, is a relatively recent, significant partnership that's making a big difference. Engaging the human communities around dedicated parks so that they see benefit to them and their children for the wildlife staying rather than seeing a benefit from poaching it has been a big change in strategy. Greg Carrett, Gorongosa National Park in Mozambique has really moved from an initial strategy that was all about wildlife conservation to one that is about human development as a means towards promoting wildlife conservation and he's gotten the president of Mozambique to see this as a workable strategy. Howard Buffett with Varunga Park in Rwanda has helped an iconic leader there in Kagame see that as a strategy which now other leaders are hearing. But the challenge to your point, China has made important significant moves in terms of the ivory markets that there remains lots of demand in the United States throughout Southeast Asia. We have not closed down all ivory markets. It is difficult to distinguish between legacy ivory and just killed ivory and we are investing money as a country in strengthening and making more sophisticated those forensic tools. One of the other things we have to do is strengthen rule of law and prosecutions. In East Africa they've relatively recently had one of the first successful significant prosecutions of a kingpin who was responsible for moving a lot of illicit ivory. If you've got weakened courts, weakened law enforcement, weakened park ranger systems and people in desperate need and something that is worth more per pound than gold or heroin, you're gonna see elephants and you're gonna see rhinoceroses poached and killed. So there's a whole series of things that have to happen to reduce and shut down demand to make it harder to move this product and encourage these transnational networks to move to other products, to prosecute those who are actually moving wildlife illicit wildlife products and then to strengthen the ability of communities on the ground to respect and value what is left of creation in their part of the world given what we've done with creation in our part of the world. And so we've invested a fair amount, there was about 150 million a year across several programs going into these partnerships both domestically and transnationally. That's a lot less than 10 billion and we've got a lot of countries that need encouragement, support, training and reinforcement, but if you see even once the impact on wildlife, on the communities around it, on the legal and political systems in countries where wildlife trafficking is roaring along, it's stunning. And we do have a once in a lifetime chance to change the trajectory here and to improve it. And as you cited in your opening remarks, time is running out for us to save some of the most iconic wildlife on earth and the consequences aren't just to elephants and rhinoceri, it's things most Americans haven't even heard of like pangolins that are being hunted to extinction as well. And the biodiversity that as a consequence is harmed by the destruction of whole species as lasting consequences. You quite rightly note that these issues are all connected and that the threat of the wildlife trafficking is the highest in the most fragile of states where there is a lack of systems and an inability to prosecute or secure borders with rampant corruption. Given the interrelationship of these problems, does that suggest that we need to think differently about some of our larger assistance programs to change some of the focus and the ways things connect together programmatically? I'm in the last stages of drafting a bill with a Republican colleague in the Senate to require a fragile state strategy. Senator Graham, who's the chairman of the State Foreign Ops Appropriations Subcommittee is passionate about directing more of our assistance to fragile states. I'll pick one region in the Sahel. You've got five countries in a row that are significantly impacted by terrorism, by poor governance, by climate change, by conflict between pastoralists and agriculturalists. There's a whole lot going on. And Niger and Burkina Faso are two of these five. We have a military strategy to invest in the defense and security capabilities of the G5. It's got to be married with a development and democracy and diplomacy strategy. And so what I'm hoping to do is to hammer out a bill that requires an intentional strategy for how to deal with fragile states, set metrics and markers, come up with goals and objectives, and be clear about ways in which fragile states have big and costly consequences, not just humanitarian consequences, although they have that as well, migration consequences, security consequences. It is much more difficult and costly to take a country like Central African Republic and put it back together after it's been completely destroyed as a nation than it is to prevent that from happening. And the wildlife consequences of something like car spill into a several country region, as we all know all too well. Senator Coons, I know you have a schedule that has upended itself. Changed just a little bit. I want to just, if you want to make any closing comments, and then Chairman Rice, I know we'll be able to keep you here, but we want to thank you for joining us. Thank you, two thanks. Chairman Rice has referenced the Build Act. This is something we've worked together on for a year and a half to get hearings, to get markup, to get final language. It takes the Overseas Private Investment Corporation, or OPIC, and modernizes it, doubles it, gives it different strengths and capabilities and powers so that it really is up to the task of being a real partner with the development finance institutions of our European partners, our Asian partners, and what allow us to have the resources to do things that provide an alternative development path to what Chairman Rice referenced in terms of China's very big footprint, particularly in Africa, but a footprint that doesn't often come with the same priorities that we have in terms of environment and diversity, biodiversity, and conservation. I do think we can and should be hopeful, though, about our working partnership with China on wildlife trafficking. China is looking for ways that it can have a positive profile in the developing world, and this is one that I think we need to be really open to the positives of. Last, Chairman Rice is really leading on the Delta Act, and it's a great example of the kind of piece of legislation that will have a lasting impact. It's a part of the world that I bet you if we pulled the average person in our home states, relatively few, have heard of the Okavango Delta. So it's the kind of... Now they have. But I'll just, as a closing compliment, say that's the kind of labor of love that to have the full committee chairman of the House Foreign Affairs pulling for a bill that creates a multi-nation construct that will actually help preserve the Okavango Delta. I mean, that's a real gift of blessing and a real remarkable legacy. So thanks for the chance to follow along and to follow your lead and to work together to make a difference. Thank you, Chris. Thank you. And thank you for joining us, Senator Coons. Let's pick up on two things that Senator Coons just raised. The first is, do you want to give a quick lay down for the audience on the Delta Act? Yeah, let's talk a little bit about the Delta Act and also what we're going to need to get it through the process, which is important, Nancy. But the concept of creating a system where the countries, four countries in that region are all cooperating in order to maintain the ability of the water to flow down the Okavango River from Angola into the neighboring states to the south, it is crucial that we have the buy-in of those governments, but it's also crucial that we have the buy-in of the people in the region. It's important that we have the expertise of the NGO communities that can be part of the solution. I can tell you one of the encouraging things from my recent, our recent trip to Angola. And that is the young chairman, chairwoman, of their committee that oversees the environment is in fact herself a former park ranger. So she has a certain enthusiasm for this mission. The elephants which used to roam into southern Angola before the Civil War between Savimbi and DeSantos, between UNITA and the government that tore that country apart. The landmines that were up there have taken out so many species that in terms of the elephants themselves, they weren't even going back up there. They had passed on the information among the herd that these landmines would blow a foot off an elephant. Don't go back up to your traditional. And we have finally reached the point with demining that these species now are transmitting information that it's safe to go back to their original migration patterns. So just as in the Serengeti, the migration patterns were all through this four country region. And the concept here is to get the buy in, to get the plan in order to have a smart development. And what we're up against are competing ideas which would Nancy actually dam the rivers and use it for irrigation, dam the O'Vango rivers. Is that the Chinese-sponsored project? Well, but it's not just Chinese. I mean, yes, there are investors from China, the government from China that's pushing this, but we shouldn't kid ourselves. Our challenge here is a universal one. Just as we were talking about the challenge with these criminal syndicates, the biggest bust which we've made recently for U.S. Fish and Wildlife was in my area in Southern California, the biggest one we've had yet, taking down the ivory trade. They called it Operation Jungle Books. Jungle Book was the name of it on the books. But it's a reminder that we need a plan that is going to apply to everyone. And I would tell you again, one of the most encouraging things, and you've all seen it in the one campaign, one of the most encouraging things you see in Africa today is the growth of civil society. And the desire on the part of civil society being engaged in helping to bring these plans to fruition, to bring plans which will work long term for Africa. And so that's another area where the model that those of us who believe in democracy and the ability for human beings to constantly create a better future for the next generation is up against an authoritarian model. And as you're only to aware, there are enthusiasts of that authoritarian model that are consolidating power in states like China, where today she has consolidated a tremendous amount of control, but people like she and Putin are trying to sell on the world stage to other heads of state, for example, in Turkey. The concept that, hey, follow our path, not what the Europeans or what the United States or what Japan is telling you about a model where you get civil society and independent courts involved. You don't want any of that. That gets in the way of your ability to command and control. And so part of this also is sort of our vision for empowerment working with NGOs in Africa who have that same vision, who want to see a court system which is independent, judges who can make these decisions to apply the law, who want to see, you know, parliaments that are empowered. And this is why the ICCF, our International Conservation Caucus work is so important with these parliaments across Africa, because that is where, just as I say in Angola, that is where we find the enthusiasts like the former park ranger who brings her committee in to meet with us and says, here are your allies and our efforts to enforce the DELTAG. So this concern about the competition with China in Africa has really, really increased over the last few years. How are you seeing some of the long-term relationships and investments in conservation, in combating, poaching, holding up against this kind of competition? Well, I think... Some of the partnerships and alliances that you've seen built over the years. As I shared with you, I think Beijing's buy-in with the ban on ivory has been essential. That's the good news. I think the discouraging part of what could undermine our long-term evolution of a system that guarantees rights and will guarantee smart development for the future for Africa. I mean, that's what's at risk because the messaging, whenever I'm in Africa, I watch the Chinese television stations. And what they do message is the idea that you should have a command and control economy. Now in the United States or in Europe, economists call that idea the fatal conceit. The idea that you're going to command and control everything from the center. I mean, it gives rise to these big industrial projects and so forth, which on paper may look good, but lacking the engagement on the ground of local communities and a smart build-out of systems. You and I know from going to see the degradation in some of these areas, how there's a lack of calculus on the social costs of the equation, certainly with respect to pollution and with respect to the consequences of the type of mining and so forth. I think this is where we can be value-added and I think this is where USIP and USAID and our partners in Europe and Japan and around the world who share the values, the same democratic values that we have, the concept of rule of law, the concept of protection of the environment, sort of Teddy Roosevelt's vision of what motivates democracy in the United States, the idea of always being better and trying to have a vision for the next generation. All of that needs to combine here with greater engagement on the continent and that's why I appreciate the forum you've put together here today, Nancy. Well, Chairman Riss, you are leaving behind an extraordinary legacy and a decades-long commitment to these issues and your leadership has mattered tremendously. I guess one is looking back, where do you see, what are you most proud of and how do we collectively maintain some of the extraordinary progress that you've helped push forward? Well, there's a lot of work on the continent that I think was important. Frankly, from the economic perspective, I think it could go on. In terms of health, I think PEPFAR. I mean, there's a lot of work that we have done that has laid a foundation of the African Growth and Opportunity Act allows products from across Africa duty-free access into our markets. Tripled trade with Africa, but it was dependent also on pushing the idea of independent courts, independent judges evolving towards more and more democracy and a buy-in by these governments across Africa to be part of this. Coincidentally, the Europeans applied the same principles and I must say it's very encouraging that they were willing to also push for opening markets in Africa because this allowed exports from Africa to come into the European markets. I think there's just a tremendous amount of work on every front to be done. I'm proud of the work that we have done. I think it was essential that it be done in a bipartisan way. I think it's very important in the future that we adopt an attitude on the Foreign Affairs Committee that we must speak with one voice. And I think it's important that we continue what I've done to try to change the culture of the committee in the sense that we have to treat each other in the way that Thomas Jefferson, when he wrote the rules for the Senate, originally intended for members to conduct and transact. We need to split the time equally. We need to have the members travel together because if you're sitting next to somebody from a different political party for 14 hours as you're flying and frying a glass across the Atlantic to Africa, you're gonna learn something about their viewpoint and you're gonna start listening. And the most important aspect of all of this is to listen and not just to our colleagues. Listen to the parliamentarians from Africa and around the world, learn from them as well, understand their unique perspectives. As Chris was saying earlier, they have a certain vantage point on this, but when we can share our experiences, when we can take their delegation of park rangers and heads of state out to Yellowstone, when they can contemplate for a little bit how much we lost before we got a handle on this, a little over 100 years ago, and when they contemplate how much they have preserved there to conserve for future generations, I think all of this can work for the benefit of the future. So you've mentioned several times in your comments the power and the importance of civil society both here and in Africa. Is this something that you've seen change and evolve over your time in Congress? Well, I've just seen not just the one campaign but across Africa I've seen the impact reporters are having, and we have programs, of course, now in which we try to empower these journalists, these reporters, and try to give them the ability. One of the things that I used to talk with President Clinton about, and which I still hope we can do, is a concept of empowerment in, we've never done this, effectively. Think of the impact it could have. But if we had platforms on social media, on radio, on television, just as we do Radio Free Europe, Radio Liberty, right? If we had platforms like that for civil society, think for a minute, if Ellen Johnson Sirleaf in her first campaign, which she lost against Charles Taylor, had even the ability to get up on the air on radio or television, he dominated all of that. Charles Taylor dominated all of that, no wonder. We probably, as close as the election was, we probably would not have seen the devastation, not just of the Liberian Civil War, but what happened in Sierra Leone. We're just back from Sierra Leone. They're still building back from the consequences of all of that. A little bit of, think through, think through where we could have the most impact on empowerment for civil society. Because just remember this, it's not a vacuum. Putin's agents and the Chinese government are selling a very different concept. It's one without a free press. It's one without rule of law. It's one where civil society has no power. We're selling the antithesis of that. Let's figure out how we can do a better job of helping our allies on the ground over there, because they're the ones taking the risks, right? They're the ones putting their lives on the line. I can tell you, in Nigeria, Ambassador Carson will appreciate that. When you get a call from General Obasanjo, who says the dictator just passed away, I got my training in Fort Benning, Georgia. And the one thing I know, the other generals want me to head this government. The one thing I know is this government should be under a constitution. I want to have an election here. I want election observers to come in here.  I want you on the ground so that we can have an election, and then I want to pass the control off to a civilian government. And when the guy who was elected was a former prisoner, political prisoner, held in prison by the former dictator, you get a certain feeling that, yes, our values, and by the way, the Europeans played a role in this too. They were election observers too. The IRI and NDI were there. Sometimes I think we underestimate when we're true to our values and we step in to assist those who want to bring about empowerment. We can have an enormous change or effect that brings about that change. At the same time, Northern Nigeria, Ambassador Carson, I remember a governor from Northern Nigeria telling me something should be done about this, Mr. Royce, because I grew up in Moscow. I got an education there, how to read and write, but there's something new across the street. And it is a very different education than the one I received, and it's not indigenous.  It is a foreign concept, and they're teaching jihad. It's something should be done because eventually, I'm governor here now, but they'll pull all of this down. That state was where Boko Haram 15 years later. Now, we had hearings on it, Johnny. We tried to call attention to it, but we did not do enough to put pressure on powerful families in other societies. In this case, families probably like the Bin Laden Construction family, who were putting money in to that region that came with one caveat, and that is, we pick the Imam, we bring him in, and it was not an education those young men were getting. It was indoctrination, and they were supplanting the indigenous Islam of Northern Nigeria. The United States, if we're not listening to what we hear, and if we're not trying to lend a helping hand on any of these fronts, by the time we're dealing with the consequences, it can be too late, and so this is just an appeal. Stay engaged, stay involved, get more involved, get your friends involved. We all have a stake on this planet. We're all interconnected as human beings, and we should all have the same values in terms of human freedom and the attempt to move societies towards the rights of the individual. And towards protection of the magnificent diversity that we have on this planet. Chairman Royce, this is exactly why you will be so missed in your current position. You leave a very rich legacy, many years of dedicated public service. I hope that as you have more time to reflect that you'll come back and share more of your stories and your wisdom with us, we hope that the work that you've set loose will be continued and we will take your admonition to mind to stay engaged. But thank you for what you have done for your career that has made a tremendous difference for our country, for the continent of Africa, and in many, many dimensions. We owe you a great debt. Nancy, thank you and I will tell you, I've reflected on term limits for committee chairman. I am not a fan of that idea. But I am a fan of what you're doing at USIP. Thank you. Thank you. Please join me in welcoming...


Hi, everyone. And we're in the second half of the course right now. So if you've made it thus far, congratulations. And we're going to get into more interesting topics. The first half is just basically trying to teach you constructs, I think, probably better in most programming languages in one form or another. But as we get to the other side of this course, I think there are some additions that Python has that really make it, I think, very unique as a programming language. And part of it has to do with, I think, just how smartly it was put together. It seems like it was an answer to so many things that were so unnecessary. And people just got in this rut of doing things the same way in every single programming language. And then no one was really thinking outside the box anymore when it came to newer programming languages that you just thought, oh, the syntax has to be like this. And for instance, when it comes to class definitions and so forth, or defining an array in a language like Java, I get why they have it that way. But it's cumbersome. Whereas Python, it's just one-liners can pretty much do everything. And that's where I think the beauty of these data structures we're going to talk about today lie. It's just they do exactly what they're supposed to do. They do exactly what you want them to do. And there's not a lot of overhead to get them up and running. So today we're going to talk about tuples, sets, and dictionaries. And you'll see what I mean as we kind of go into this. I'll get away from that because we're going to start out with tuples. And so a tuple is just like a list. It's basically it's an immutable ordered container. So let's sort of pick apart what that means. Immutable means that you can't change it. And it's ordered, which means it kind of acts like a list. And so if I go ahead and do something like this, the syntax for creating a list looks like so. And I'm sorry, for a tuple looks like this. So the left parentheses and the right parentheses are the syntax for creating a tuple. So it almost looks like you're creating a list with the comma separated values. But instead of the square brackets, you're using the parentheses. And so if you go ahead and print this, it's going to get printed. It's going to, again, almost look like a list. And except if we print the type of it, if we print the type and say, let's say type of this variable like so, then it should tell us that we have what's called something of a class tuple. And so everything about the tuple is almost like a list except that it's not mutable. You can't change it. You can't change the values. It's right protected, basically, if you want to think about that. It would be safe, almost safe, to make the statement that a tuple is a right protected list. And so in other languages, you might have the ability to create, for instance, constants. And so there'd be some computational equivalence to me saying something like a tuple, although, again, some people would cringe when I say this. But if you programmed in another language, trying to make the connection, if you have a tuple, it's kind of like a constant list if you want to think about it like that. And that's all there is to it. There are places within programming where you're in a don't touch mode. You're not allowed to change these values once they're set up. And the tuple is the vehicle for that type of a construct. So if I went ahead and said, OK, well, let me go ahead. And since they're ordered, by the way, since they're ordered, you can use indices just like you would for a list. So I could print a 0. And if I go ahead and do that, I know we're all experts at this point. We're referring to the 0th element. So we're printing out the value 3, because that's the 0th element. Or if I wanted to print element 0 through 3, something like this, then I'd see the elements 3, 4, and 5. So you can use indexing and slicing. And all the tools that lists have been endowed with for indexing the elements contained in a list carry directly over to the tuple because they are ordered containers. Again, the only thing that you can't do is change the values. So if I went ahead and now that I've printed these out, if I went ahead and said, OK, well, I'd like to set A1 equal to 456, like so, then I would get a no-no from the interpreter because you can't change the values. That's not the point of the tuple. And that's all there is to it. Everything that you know about lists, like I said, for the most part, anything when it comes to indexing carries over. And then I think the key to any programming language has to be, it's how flexible it is. And whenever you create a programming language, you want to be able to allow the user to do pretty much anything in the universe to compute anything that's possibly could be computed. And it may turn out that you're in a jam and suddenly you realize you created a tuple and you want to be able to modify the values somehow. And so again, Python obviously has to have that flexibility. So you might say, well, I thought I wanted a tuple, but maybe I'll go ahead and set, I don't want to do something like this. In other words, I can take the tuple and I can turn that data into a list if I want to. And you can see when it first starts out, it's got the parentheses next to it. And later on, it's got the brackets next to it. So to your choice, you're the programmer, you're the expert, you know what you're doing. There may be a need to do that, but this is just a type conversion. So you should be able to see that you've changed the tuple into a list, but you can go ahead and test it for yourself. So there are places for type conversion and you want to have that flexibility at your fingertips. So that's about all I really want to say for tuples. Because if you know about lists, you know about tuples in terms of indexing, in terms of how you might use them, if you just want to have data that you want to be immutable, you don't want to change it. And then if you backed yourself into a corner for some reason or another and you had to get out of the tuple mode and get into some other mode by some type conversion, I think those are probably the three most important things that I would want to say about tuples. Again, if you know how to write loops and so forth, let's see, yeah, we did loops. And we did control structures and stuff. So yeah, OK, that's about it. OK, so that's all I want to say about lists. The next type that I want to get to are sets. OK, if there are no questions about tuples. Any questions? As of right now, we don't have any questions. But they're a little bit behind. So I like to stall for a second, just saying. This got me all into the tuple lengths from going to couple, triple, quadruple, all the way down to the 1,000th parallel is a mellupal. Maybe I'm saying that wrong. But that's to the 1,000. But it looks like we're all good here in the chat. So I'll let you get on to the next section. Thank you for that little tidbit of information. I just used up one neuron to go ahead to keep that. OK, let's get on to sets and dictionaries. Because now we go into a realm that is important for a number of different reasons. First of all, when it comes to sets in general, just to remind you of set theory, let's say, and just the concept of a set. Maybe when you were in grade school or something like that, you'd have a set. You'd have a universe. And then inside that universe, you'd have a set A. And then you'd have a set B. And you draw these at circles. And there'd be elements in the set A and elements in the set B. And there were concepts like unions and intersections. And then a set difference. You take the difference of two sets. This is usually when I start to teach this. These are the places where I start. Because I'm trying to appeal to some recollection, possibly going all the way back to fifth grade, fourth grade, or something like that, where you learned what a set was. And then so the union, they would draw pictures like this in what was called a Venn diagram, where the union would be the combination of everything that's in A or everything that's in B. The intersection was the overlap between the two sets. So this was the intersection right here. And then I'm not going to mess up my diagram with the difference. But when you take A minus B, then you take whatever is in A and less B. So that would be something like A less B would look like that. Because you're throwing out anything that's in B.  That's a good way to think about it. So unions, intersections, and differences are important. You want to be able to operate on sets. Whether you realize it or not, you've already used one instruction in Python if in the course where you have made a decision if a value is an element of a set in some sets. It's the Python word in. So that's a reserved word that you're asking the question, is that element in the set? In disguise, that's what you've been doing. I haven't really emphasized it too much. But some loops that we wrote and some that are in the course, you say like for val in something or other, that you're asking the question, is that an element of the set? But these pictures are very, very important to have. If you're doing Boolean algebra, the union is related to the OR operation, A or B. In other words, X is an element of A or X. Not either, it's not exclusive. X is an element of A or X is an element of B. Intersection is the Boolean and. If you're taking the intersection between two sets, basically what you're saying is that there's a value X that's an A and it's in the set B. It's simultaneously in both, so that would have to be this. You see, so there's a deep connection between Boolean algebra and the set operations. Not too much of what we get. Well, actually, I think I do ask some questions to at least make you aware. I think when I made up some of the quizzes that I brought up, like De Morgan's Law and stuff like that, and that comes from Boolean algebra. But coming into that, when you're coding, these are the pictures that you have to have in your head when you're thinking about the, if you want a quick way of evaluating the difference of the intersection or the union, this is definitely the picture.  So with that said, sets are unordered. They are unordered. They're not ordered. They have no ordering to them, which means you can't index the elements in the way that you would with a list or a tuple. So there's a stark difference in this kind of a data structure, for a number of different reasons, I'll try and get to it, but they're unordered and they're mutable. In other words, you can change them, okay? Just like lists are mutable. So I could set up a, and so the syntax now, so here's where learning the language is key because now we've talked about square brackets for lists, parentheses for tuples. Now we have to learn the squirrely bracket for a set. So that's the syntax for a set and we'll just print it out. And again, there is no ordering to a set, first of all. So what'll happen sometimes is you can print out sets and they'll be thrown out in some order that might go against your expectation of some ordering that you might think that the set might have in terms of its elements. And that's because they're not ordered. If you want them ordered, if you want them indexable, that's why you use a different data structure to do that.  And the main thing to note is that sets don't have copies of elements. So if I do something like this and run it, the set will only contain the values three, four, five, six and seven. There's no repetitions allowed in a set. Once you've got the elements in there, that's the end of the story. You don't need to put another one in there. Python will figure out that you're trying to make a copy and it won't allow it. So that's how a set is handled within Python. And so, again, we're in kind of a different realm, I would say, and it's wonderful because now you're endowed with all the abilities of what you'd like to do with sets. And you don't have to write like a lot of code to, so for instance, it's very common in other languages. Again, it's so funny, I'm not sure I don't wanna taint anyone if you haven't programmed in a different language, but if you have programmed in other languages, you know that you've had to write code that would have data in some type of a structure like an array. And then there'd be some new code that you'd have to produce or some method that somebody else wrote that where you'd have to determine whether or not you have a unique element or not. Is that an element unique? So people have written historically functions like the unique function and you don't have to do that, that's all done for you here. And that's why I say Python's a smart language. It really sort of, it absolves you of having to do some of the grunt work in terms of getting code up and running.  So that can be, and if you don't like that, then what you do is you use a different data structure. That's the whole point. Okay, so that's all I'm gonna say in terms of the construction. You can create empty sets. You can do stuff like this now. And you can set up variables that'll prepare a Python to know that, I'm sorry about that, to know that you are planning on using a variable in the future as a set. So those types of instructions and so forth. So that's how you set upsets. And let's see, what else would I want to do here? So here's a little example. I just kind of chuck together just to make things move more slowly because I am like the worst. Well, I don't want to say the word. That's being too negative. I'm not a very good typist. I'm gonna take a typing class, but not today. All right, so let's make believe we've set up these two sets. Now with the squirrely brackets, the curly brackets, set A and set B. And again, print them up. You want to be, when you see code like this, what you want to be able to do is you want to be able to, in some sense, predict how code is going to execute, what values will be contained. And sometimes when I teach students and I say, what's this code doing? I think many times some students will think, well, they have to guess. They have to guess at what I'm asking of them. And that's not what I want to do. You know, as programmers, we don't guess. It's like, you know what the code does. And so what you have to become is a sort of a Python instruction executor where you can execute the instructions kind of in your head as you look at them. So you can go, well, you know, you're gonna print B out. So your expectation is that you're gonna print out B without the repetitions. And then you're gonna take the intersection of A and B. So here's the intersection method. So again, when you create a set now, okay? Just like with any object in Python, you know, there's a whole host of methods that you have access to so that you can perform whatever operations are sensible for that data structure. In this case, well, definitely, you know, intersection and difference and union are ones that I think are very important to understand. So as you see that instruction, you want to look at those two sets and look at the intersection between them. Well, you can see that B doesn't have a three in it. But B has a four and a five. So you expect that the intersection is gonna be four or five. The union is gonna be, you know, three, four, five. It's gonna be, it's either an A or B or both. So it's gonna be three, four, five, on and on, whatever's in the rest of that set. And then the difference is saying, well, now we're gonna subtract off whatever is not in B in this case, take whatever is in the A and remove it from B, basically. So we can predict all of those.  So the intersection, I'm going backwards, let's go forward. So first of all, it's print out B. The whole point of printing out B is that there are no repetitions, okay? There's no repetitions. The whole point of taking the intersection and printing that out is to make sure that you understand the intersection operation. You take the union of the two and then you get this print out, okay? And it's important to note again, in this case, Python isn't going to make any effort or not a lot of effort underneath the hood to print out numbers in their numerical ordering, like what your expectation of the numeric, it'll try a little bit, but it's not gonna sit there, blowing out computer time, attempting to figure out the ordering all the elements because that's not what you do with the set unless it's an ordered set. But if you're using an order set, then you're probably, once again, you're using something like a list, for instance. So you've got some hooks in your code that associate not only the set, but then something like a greater than or less than property of some kind. And you have to do that. You have to go through the work of doing that. But anyway, so if you take the union of A and B, you're gonna get this. And then you ask the question, well, when you say E, if you set E equal to eight and you ask if E is in B, you say E and B, it's true, E and A is false. And then the difference removes whatever is in A from B. So you're left with the values eight, nine, six, seven. And it's important to know. I mean, look at this set. This is a perfect example that when I print it out, Python is only concerned because somehow or another, it's got to remove those elements from the set, right? It's gotta remove the elements from B somehow. And again, it doesn't assume an ordering to do that. It just knows that it has to remove them. So in order to remove them, however that works out, you end up with eight, nine, six, seven. So you can see right here, the values are not, they don't look like they looked up here. They look different. They have a different ordering, but they're the same elements. And you could test that. You could, if you had two sets, in fact, let's do that now. This isn't important. This is another operation. Maybe I'll set, so I'm gonna, if it's everybody, well, I'll leave that code up there if anybody wants to. I'll create some new exciting variables. I'll call it x three, come four, come a five, come a six, like this, okay? And then I'll have a y and I'll set that equal to five, come a four, come a three, come a six, like this, okay? So these obviously, these have the same elements. They're not in the same order, okay? And you could say something like this. You'd say print x equal y, okay? And so effectively what you're asking is if they are equal to one another. Oops, my thing is locking up here. So I'm gonna control x that and it will come in here and I'll come back over here. They'll to connect. We're trying my replete. I don't know, there we go. Sometimes. I was very concerned that that was the YouTube. Not the replete, you gotta be worried for a second. No, no, no, it's replete. There we go, that's good. It's the pros and cons of using a free interface. Only a flight heart attack. No, no, no, no, not you, that's good. It's not you, it's me, no, it's good. All right, so. That's never true. So lastly, right here, when you're printing x equal to y, Python is telling you that in fact this is true. These two sets are equal to one another. They're in a different order, which doesn't matter when you have a set, okay? So like I said, I just, I can't emphasize that enough. And as you program, you know, you'll figure out, you know, when you need a construct like a set versus a list versus a tuple. But the beauty of Python is that they're all there. That, you know, you're given that flexibility. And that's, that's important to, it's important at least to know about them because you, well, how about this? So, so, so we could say something like, let's see, if we do something like this. And so what I've done is I've turned, I've turned y into a list. And again, you know, there's been some measure of a decision that's made when you convert the list to a set. And let's go ahead and do one more thing. I'm gonna, let's do this. Let's do that. I just wanna show, well, let me just think. Okay, let's try this. Let's set C equal to this. So it's a list. And then we'll print C. All right. And then if you say D is equal to set of C, then print D, right? So, so what just happened in these two instructions? This is, this is something that you may need to do one day. If you do this for a living is that you'll have a set of objects and you need to, you want to remove repetitions.  You'd have to do that in a high level language. But in Python, what I did was I created a list and then I, and then I converted it to a set. And then, you know, now what I'll do is I'll convert and then I can convert it back to a list again.  Let's make things going in the way. And so when you go ahead and print the final variable, you know, just this kind of trickery, it's not really trickery, it's actually very simple, but it's three lines basically to remove repetitions from, you know, from a list basically because of sets. And you can kind of, you know, jump back and forth between the different data structures if you wanted to. So this is much, much more convenient. Again, you know, you can call a unique function in a high level language, but I'm saying that you can call a unique function in a high level language, but I'm saying underneath the hood, if you want to write that yourself, you know, you'd have to pretty much write a nested loop of some kind to, in order to guarantee that the object that you're looking at isn't equal to some other object in the list. And this type of gymnastics right here is, like I said, it's three lines just to kind of do away with all that. So again, just kind of throw ideas out there of how you might, in addition to the basic set operations, how you might have the set interact with other data structures within Python. Okay. And so, and the last thing, so that's all I really want to say about sets right now is that you really can use set operations. Is the element in the set, are two sets, quote unquote, equal to one? What does it mean for two sets to be equal to one another? Unions, differences, everything that you would want to do with a set, you can pretty much do in Python with either the methods that are given to you or by some combination of methods. And again, in the course, I ask a lot of questions about taking combinations of, excuse me, what happens when you take combinations of different methods? And again, that becomes sometimes necessary to do so. So if there are no questions about sets, then we can move on to dictionaries. Well, I'll keep my eye out here on the chat, but so far, all good. Dylan says, thank you. So I'll let you know if any other questions come through, but so far, no one's had any live time questions anyway. So I think we can probably give it one more second. I think we're probably good to move on. Great, great, great. All right. And then the last built-in data structure that I think is important, again, so these are all built in, int is built in, float is built in, STR built in, lists built in, right? Sets built in and dictionaries built in.  Is that if you have a set and if you want it to be ordered, the question is how do you go about ordering the set? How could you go ahead and do that? And the beauty of dictionaries is that you're given the equivalent of an index, so it's called a key. And you use the key to basically index elements within your set. So you create what are called key value pairs. So dictionaries have key value pairs.  So much so that the syntax for using the key is exactly what you would use for an index in a list, except that you have to use the key. So maybe I'll just again, save myself some typing, because now this is where I would go like so slow.  So that's how it goes. Anyway, so here are two examples of creating dictionaries. And so there's different ways of doing that. You can invoke the dict data type commands to actually, so you can send, so you can drop, this is actually a list of tuples. If you really, really watch this in slow motion. So in fact, let me come back to that one because let's do the first one first. So this would be, notice the left, right curly brackets, for this invocation right here, is that you've got the left curly bracket, you've got the right curly bracket. So it looks like you're creating a set. That's what it looks like. And that's why the syntax is there. I mean, that makes sense. But instead of just having the element V1 or the element V2 or the element V, in this case, I'm using strings. So these are string values. You don't have to use strings. I'll have other examples where you can use numerical ones. It's irrelevant. And you can have anything as a value basically. You can, and that's the beauty of diction. That's the beauty of all the data structures in Python is that you can drop any value in the universe that's a valid data type, either because it's built in or because you defined it. So these values can be pretty much anything that you want them to be. In this case again, I've just decided to use string data. But the key is K1, K2 and K3. Again, you don't just have to use text. You'll see other examples where you can use, for instance, numbers. The point is that the key is connected to the value. So the construction of a dictionary has to do with constructing key value pairs separated by a comma, just like you would for a list or a tuple or a set. And you're using the set notation. So that's the syntax. And then depending on, again, there has to be a measure of flexibility in any programming language. So I'm not out to confuse anyone, but you need to have different tools at your fingertips at any given day because of the type of data that's been handed to you. And if data comes in a certain form, what do you do? How do you handle that? So in this case up here, I'm actually using the dict command. That's go ahead and notice I've got a list of tuples. And the tuples are gonna be considered to be the key value pairs. And of course those tuples are comma separated. So this is another way to invoke a dictionary. And if you, I can move my little zoom thing over, you can see that these two commands do exactly the same thing. So this is probably the quickest, fastest, simplest way to build a dictionary. But if you have data in other forms, Python is very flexible in the sense that you can take one kind of data and then plop it into a dictionary. If that's the corner that you've been backed into, sometimes when you program, if you do this for a living, I mean, it's like you're at the mercy of the people who give you the data and they don't care. How they save the data, they just like look, this is how it is and you gotta, so you wanna have that flexibility to deal with individuals who aren't thinking like programmers and just kind of like throwing their data into a big garbage can and asking you to unravel all of it. So that can happen. Anyway, so you need that flexibility. Anyway, so these are the key value pairs and this is how things get printed out. So the dictionary is kind of like the answer to the question, is it possible to index elements within a set? And the answer for sets is no, you can't do that. The answer is no, by construction. But for dictionaries, the answer is yes. So now when it comes to the question of mutability, you'll see sometimes people will consider dictionaries to be in some sense immutable and what's immutable about dictionaries are the keys. You can't change the keys. You can't mess with the keys. It's kind of like a database. It's like once you've made a decision for the key value, not the value, the key, I'm giving myself a big stuff. You can change the values, but you can't change the keys. It wouldn't make sense to do that. It's like the whole point of setting up the dictionaries is with the intent of collecting data and putting it in a form where you're using references to access sets of data.  No, I'm not even gonna say it because it'll get too confusing. That's good. So anyway, let's stay focused. So that's how you can, so now what I can do is, because I have the key, I can index into in some sense, I can index into a dictionary like so. So maybe I'll say, you know, print Y key K1. And what you get out of it is you get the value V1, okay? So this key now is being used as an index and that's all there is to it. It's just, you know, if you ever were in the state of complaint and you're like, well, I can't index the values within a set and that's what I wanna do. Well, this is the answer to that complaint basically.  You know, you've got columns, you've got names for columns, possibly names for rows as well. And we have names for columns that name of the column in some sense. And also the indices that define each cell, you know, give you access to the value that's contained within a cell. So there is a little bit of similarity between the construction of a dictionary and handling, you know, data sets that require key value pairs. And again, I'm going to stop myself. Okay, stop it, stop, get back to the program. Okay, so that's how, and then of course you can set that particular value if you wanted to, let's say K1, what is mutable is that you can set the value equal to, you know, something else if you want to. And that's the whole point. It's like, you know, if you look at this syntax right here, you'll see that it looks exactly like what you would be doing for a list, except the index is weird. It's not like, and it could be though, you could number these values, you know, 0, 1, 2, 3 and make it look like you're accessing a list. So I'll get to that in a second. But when I print these values out, you'll see that you can actually change the values. So in that sense, the dictionary is in fact mutable. Okay, so now you can see after I print it out, I put the 345 and I use the reference as K1. So I can create, let's make believe I create another, let's not make believe, let's just do it. Okay, let's go ahead and create the indices 0, 1, let's say 2, like that. And so now if I run this code, I have these keys. So now what I can do, watch this in slow motion. I can actually, and so here, I can change the values. Now, this is where context and syntax is everything. So now I've taken the element that with the key is 0 and I've changed it from this text, this string into the number 345, okay. And so listen carefully, you know, when you, if you look at somebody else's Python code and you see an instruction like this, context, just like in a language, context is everything. You know, is it, when if I say 2, you know, do I mean TO, do I mean TOO, or do I mean TW? Over here, over here, what I've done is I've almost looked like I've made reference to a list, possibly a tuple, or in this case, a dictionary with the key about the key equal to the number 0. And it looks exactly like the syntax for what you might use for other data structures. So context is everything. And you need to make sure you understand that this is still a dictionary and that those values are what they're supposed to be, okay. So that's the introduction to dictionaries. A couple of more important points to bring out is, let's see here, just pick something out of the blue. Let me think for a second. I just wanted to do something. Oh yeah, okay, go get it. So here, how about this, here comes something. So once again, with regard to, you know, useful methods, okay, methods that are useful for given data structure. When you use, for instance, lists, you know, for instance, like the append method, okay, because you're afforded a whole bunch of methods whenever you have a specific data structure. And again, the course goes out of infinitum into that. But, you know, you want to at least, you know, you got to know the append operation as a whole, you know, you can see the whole list of methods, some of which you may use, some which you may never use, but it's the same thing for dictionaries. Dictionaries have their own list of methods. A really important one to know, probably at the top of the list is the update method because oftentimes you're not doing onesie twosies with these kinds of things. I mean, you can have like a lot of data and you can have a lot of data contained in one dictionary and you can have a lot of data contained in another dictionary. And under those circumstances, you might want to merge those two dictionaries for one reason or another. And when you merge them, you want to do something like an update function, right? So here I've got a dictionary with the values, keys one, two and three values, one, two and three, again, not the most exciting dictionary. Well, the dictionary nonetheless, oopsie. And then another one. And if you want to update, let's say the Y with the X, what'll happen is that is now what you can do is you can connect effectively connect dictionaries together. And that's probably, you know, you may, like I said, you may do onesie twosie types of instructions where you want to access one singular value and you know the syntax for doing that or it's a left bracket, right bracket. But if you wanted to connect up large amounts of data, this is the method that you would want to do. So once again, you'll develop expertise when it comes to using dictionaries. But this is probably more the correct context. It's the idea that you've got lots of data on the left hand and lots of data on the right hand. And you're like, I just want to check these two things together into some kind of a set with a bunch of keys. This would be the method for doing that. What's some other stuff that we can do? Here's a good one. So this I'll just lift this right out of here, right out of the course, we'll lift it, let's say.  And so the key A is going to be set equal to alpha. The key G is going to be set equal to omega. And then we can go ahead and print it out. And then you can go ahead and, as I just showed you a second ago, you can change different values. But this is also very, very important, extremely important. Because the dictionary is meant to be a generalization of a set. And if it's a generalization of a set, the question is what's being generalized? And what's being generalized is the fact that the elements of the set are the keys. They're the keys, not the values. And because the keys are the elements of the set that point to a given value, when you ask a set question, like is the element character A in a set in the dictionary Z, you're asking about the key, okay? You're asking about the key. So the set operation is the character A and Z is with respect to the key, not the value. That's an important distinction to make. That's important to know, because that can affect how you program as well. I'll try and give an example of that in a second. You'll see why it's important. And maybe I'll even show you, well, I'll do this first. So if we run these two, we know that Z is a key and A is not. So this is important. An important question for dictionaries is something like, is this key in that dictionary? Okay, is this key in that dictionary? You might ask a question like that because you might have a key and you wanna use a key and you wanna make sure that it's not already in the dictionary because obviously that wouldn't be good. You can't have one key referencing two things. That's not gonna happen. Python will stop you from doing that either by wrecking your dictionary or you're not doing what you wanted it to do. So that would be a no-no. But the point is that if you ask the question, is the key in that set, then you'll get the value printed out. So this is saying, print the value if the key is in the set. So this is a very, very common thing that one does with dictionaries. If, because you don't wanna make reference to a key that isn't in, because that's gonna give you, and we'll get about, what is it, two or three sections from now, units from now on exceptions. Python will take exception to you attempting to use a key that isn't in the dictionary and you'll get a key value, what's called a key value error. And that's an exception. So we'll get to those.  And the if statement is checking in advance, where it's asking the question, is it in the set? So in this case, I guess what I'm saying is this, let's do it like that. And so you're gonna get an error. It's not gonna like that, okay? Because you made reference to a key that wasn't in the dictionary. So this is a very important chunk of code right here. If you're writing good code, you're always gonna check keys, keep on saying key values, but because I'm thinking key value, but you're always gonna check the key before you make reference to the key. There's something's gotta be done on the programming end to do that. Python's assuming that you are all responsible programmers and that's kind of how it works. Other stuff, let's, oh, okay. So what I was gonna say before was this. So let's make believe that we created this dictionary right here. And so we do this. So if I were to say something like just, so when you perform the set operation, if you wanted to do a variable conversion of some type setting, typecasting, and you turn Z, which is currently a dictionary, into a set, what's going to happen? What's gonna happen is that Python is not going to extract the values as the element, okay? It's going to extract, because it has to make a decision. You see, it has to make a decision because sets are only allowed to have singular elements. The element could be anything. The element could be the kitchen sink. If it's defined, if you've defined it properly. But the only thing that's gonna get pulled out are the keys, if you make a conversion to a set. So that's just a, you know, that's a syntax decision on the part of the language. So you just, but that's oftentimes healthy to know. It's a good thing to know if you ever, if you wanted to convert, if you wanna get your data, you have to go to a little bit more great length to get the values out. If you wanted to, you know, drop them into some other data structure of some kind, which brings me to, let's say, for instance, this, chunk of code here. So here, what I've done is I've created a function because now we wanna kind of tie in these last couple of minutes, just tie everything together up until this point functions, loops, if statements, and dictionaries and what have you. So we're talking about dictionaries. I created dictionary. Again, it has the keys, in this case, I've created keys v1, v2 and v3 as strings and my values are one, two and three. And then, let's see here for a second, okay. And then, and then a function that is, what's gonna happen is that we're going to drop the dictionary into the function and we're gonna be, start searching for the value two, okay. And we might wanna know the key that's actually associated with the value two. I mean, there's a million different things you can do with dictionaries, but I'm just trying to show you one possible way that you might want to search a dictionary. You know, you might end up having to do this where we're going to, the loop is going to be based upon sort of cycling, iterating through all the keys in the dictionary D. And then if the dictionary element that associated with that key is actually equal to the value, then you go home. In this case, what happens is that you'll return an empty dictionary if it's not on, if the key is not there for that given value. So what happened was is that the key associated with the value two was found. And then if there is no value, three, let's say, three is on the, sorry, let's try set. And then you get an empty dictionary back if seven is not, isn't found. So just a number of things I wanna say, I'm trying to unravel all of them. First of all, this code is useful because it takes you to kind of like a culminating point where you can write a function whose input whose input is going to be a dictionary. In addition, a lot of times what you're doing with dictionaries is as you are with many different data structures as you're searching for values, you have to kind of somehow or another have some principle methodology for cycling through all the values and whatever data structure you're using as you cycle, iterate from one to next to the next to the next if it's a sequential processor. And so in this case, it's also showing you, again, just to remind you when you write loops that you don't have to write, you can, there are implied iterations. You can, the iterations are implied by cycling through the values within a set, for instance. So notice, and this is another indicator right here that you've got this set operation and you're searching for keys in the dictionary D. So just like I showed you a few seconds ago, like when you apply the set operation to a dictionary, the keys are what are considered to be the elements within the set and therefore, okay, and therefore when you write a for loop that you can cycle through the keys in that dictionary, for every key that's in the dictionary. So this is a set operation and you're basically creating an iterator based upon the keys. And then finally, a simple if statement for, and this again goes to show you the power of the dictionary is that the key is acting like an index and therefore the index syntax is what's here. So Python is very sensible. It's sensible in the sense that, okay, well, we've got lists and we've got the left bracket, right square bracket. You've got tuples. All right, you gotta remember that you have parentheses. When you have sets or dictionaries, you use curly brackets because they're both in some sense, you know, the dictionary is a generalization of what you understand to be a set. And then because of that generalization, the whole answer to the question, I'd like an ordered set. Well, the way that we're gonna do that is we're gonna create these things called keys and the syntax for using those keys is exactly like how you would index, you know, an ordered container of some kind, like a tuple or a list. So it's, again, it just, it makes a lot of sense, you know, as if you can get by and memorize the left bracket, the parentheses for tuples and then the curly brackets for sets or dictionaries, the indexing syntax, it just falls back on what you know for lists again. So again, just an example of a function, a for loop and if state, you know, for and if statements, dictionaries and I think that's, you know, a good stopping point. I think that's all I wanna say for today. I'll take some questions if everybody has questions or, you know, I think, yeah. That sounds great. I think mostly just people saying good, thanks, all this kind of stuff, but I'll let them buy a little time and since we have a little time, I'll pose an off topic question for you potentially while we wait to see if people do stuff. But again, everyone, this is Unit 6 of Introduction to Python. All of the links are in the description below and in the chat. Make sure you start from the beginning and catch up to us. So my question to you is at the beginning, you said this is the moment where like this course really starts diverging into Python itself, right? So my question is, and I kind of think of this as like a video guy, like, you know, there's a lot of different programs to video edit, right? Like if you understand the concept of nonlinear editing, like it's mostly about learning the terminology and the layout and like the specifics of those programs, right? Like someone's like, hey, do you know how to use this program? Like I can figure it out. Would you say kind of the same? Like if you understand the basic concepts of like maybe coding in a different language, would then Python be learning like the specific terminologies and quirks? Like dictionaries are just like the place where you like store the key values so like people might know it as like a map or a hash, but if they knew it, would they know it or? Yeah, I mean, so like I said, like some people look at dictionaries as hashes, for instance, so other languages have constructs for hashes. And so, and I think that's, you know, the funny thing is that every language when it sees, even if it doesn't have it as things at its inception, they're added in response to other languages.  So even if a given language doesn't have the ability to do hashes, oftentimes what will happen is that they'll write libraries where you can import that library and then basically have all the power that would be afforded to you in like a Python. So, you know, the answer is yes with an asterisk because it depends, you know, on, if you're talking about sort of the core language or extra add-ons, you know, that have been thought of after the fact because some other language, you know, you saw some other language doing it and then you've got to import libraries to do that sort of a thing. So these days, like I said, there's so much crossbreeding, you know, the, I think when you learn one language for the most part, you have an expectation, if you program another language, you have an expectation that it's gonna do mostly everything that you were able to do in the other language. And for the most part, that's, you know, you could say that's true. I think when you get into some of the modules in Python, they are a little bit more, I would say, advanced and more curated than other languages.   So for that, the answer is yes. And then there's other stuff, like I said, there are add-ons, you know, that people made in response to languages like Python after the fact. All right, well, thanks. That was great for my personal investigation. I don't know if anyone else liked it. I'll let you know next week. Give us any comments. But yeah, no, so that's great. Again, everyone, basically I did the closing before, but definitely check out the course. We'll be back the same time next week. Again, thank you, Dr. Sack, educational as always. As I said, the comments, nothing but glowing. So again, thank you everyone for joining us.